| ||||||||||||||||||||||||||||||||||||||
Resin 3.1 Documentation Examples Changes Overview Installation Configuration Quercus SOA/IoC JSP Servlets and Filters Admin (JMX) EJB Amber Security Performance Hessian XML and XSLT Third-party Troubleshooting/FAQ JAXB Annotations IoC Annotations JAX-WS Annotations JMS Configuration init bean CronResource RMI Resource FAQ |
CronResource executes application Work tasks at configured intervals. com.caucho.resources.CronResourceOften, applications need to run a task at specific times. The
<web-app xmlns="http://caucho.com/ns/resin"> <resource type="com.caucho.resources.CronResource"> <init> <cron>*/15</cron> <work resin:type="example.PeriodicWork"> <foo>Custom Config</foo> </work> </init> </resource> </web-app>
The cron specification follows the Unix crontab format. The cron is composed of 5 fields: minutes, hours, day of month, month, and day of week. Each field specifies a range of times to be executed. The patterns allowed are:
The minutes field is always required, and the hours, days, and months fields are optional.
Hello, World example<web-app xmlns="http://caucho.com/ns/resin"> <resource type="com.caucho.resources.CronResource"> <init> <!-- every minute --> <cron>*</cron> <work resin:type="example.PeriodicWork"/> </init> </resource> </web-app> package example; import java.util.logging.Level; import java.util.logging.Logger; public class PeriodicWork implements Runnable { static protected final Logger log = Logger.getLogger(PeriodicWork.class.getName()); public PeriodicWork() { log.info("PeriodicWork: constructor"); } /** * Required implementation of java.lang.Runnable.run() */ public void run() { log.info("PeriodicWork: run() Hello, World"); } } [13:04:27.429] PeriodicWork: constructor [13:05:00.095] PeriodicWork: run() Hello, World [13:06:00.182] PeriodicWork: run() Hello, World bean-style configuration example<web-app xmlns="http://caucho.com/ns/resin"> <resource type="com.caucho.resources.CronResource"> <init> <!-- every minute --> <cron>*</cron> <work resin:type="example.PeriodicWork"> <message>Goodybye, World</message> </work> </init> </resource> </web-app> package example; import java.util.logging.Level; import java.util.logging.Logger; import javax.resource.spi.work.Work; public class PeriodicWork implements Work { static protected final Logger log = Logger.getLogger(PeriodicWork.class.getName()); String _message; public PeriodicWork() { log.info("PeriodicWork: constructor"); } /** * Optional, called in response to presence of <message> * configuration tag. */ public void setMessage(String message) { log.info("PeriodicWork: setMessage"); _message = message; } /** * Optional, called after bean is created and any setters * from configuration are called. */ @PostConstruct public void init() throws Exception { log.info("PeriodicWork: init()"); if (_message == null) throw new Exception("`message' is required"); } /** * Required implementation of java.lang.Runnable.run() */ public void run() { log.info("PeriodicWork: run() " + _message); } /** * Implementation of javax.resource.spi.work.Work.release() */ public void release() { log.info("PeriodicWork: release()"); } } [13:04:27.429] PeriodicWork: constructor [13:04:27.429] PeriodicWork: setMessage [13:04:27.429] PeriodicWork: init() [13:05:00.095] PeriodicWork: run() Goodbye, World [13:06:00.182] PeriodicWork: run() Goodbye, World (close Resin) [13:06:00.345] PeriodicWork: release()
|