...
- Integrating Quartz with the framework requires some glue code.
Coding a Quartz ActionJob
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 ActionJob 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); } } } |
...
- The name of your job is the name of the Action to execute (no ".action" equivalent suffix).
- All the parameters being sent to the Action are provided by the JobDataMap of the JobDetail object.
Info According to the Javadocs of
org.quartz.ee.servlet.QuartzInitializerServlet
, the Quartz scheduler is setup as a servlet.
Sample Quartz Email Action
The following code schedules an e-mail action:
...