THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
Integrating Quartz with the framework requires some glue code.
Coding a Quartz ActionJob
Code Block | ||
---|---|---|
|
The following class performs the glue between Quartz and WebWork:
Code Block |
---|
package com.trantek.sit.action; import com.opensymphony.xwork.ActionProxy; import com.opensymphony.xwork.ActionProxyFactory; import com.opensymphony.xwork.interceptor.component.ComponentInterceptor; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.util.HashMap; public class WebWorkJobActionJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { try { HashMap ctx = new HashMap(); ctx.put(ActionContext.PARAMETERS, context.getJobDetail().getJobDataMap()); ctx.put(ComponentInterceptor.COMPONENT_MANAGER, ???); ctx.put(???, ???) ServletDispatcher.createContextMap() ActionProxy proxy = ActionProxyFactory.getFactory(). createActionProxy("", context.getJobDetail().getName(), ctx); proxy.execute(); } catch (Exception e) { throw new JobExecutionException(e); } } } |
To schedule webwork actions you simply Actions to be run by Quartz, create a job Job where
- the The name of your job is the name of the WW action Action to execute (no ".action" equivalent suffix).
- all All the parameters you want to send to the WW action is contained in being sent to the Action are provided by the JobDataMap of the JobDetail
...
- object.
Info |
---|
According to the Javadocs of |
...
, the Quartz scheduler is setup as a servlet. |
Sample Quartz Email Action
The following code schedules an e-mail action:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); JobDetail jobDetail = new JobDetail("email.send", scheduler.DEFAULT_GROUP, WebWorkJob.class); Map m = jobDetail.getJobDataMap(); m.put("to", "me@bogusdomain.com"); m.put("subject", "quartz test"); m.put("body", "This is a quartz test, Hey ho"); m.put("smtpServer", "smtp.bogusdomain.com"); m.put("from", "quartz@bogusdomain.com"); SimpleTrigger trigger = new SimpleTrigger("myTrigger", scheduler.DEFAULT_GROUP, new Date(), null, 0, 0L); scheduler.deleteJob("email.send", scheduler.DEFAULT_GROUP); scheduler.scheduleJob(jobDetail, trigger); |
...