RE: Quartz Job setup with JobDetails requires parameter free constructor - how to inject Service bindings
It's still a WIP but I created a TapestryJobCreator which gets a PerthreadManager and a Runnable (your service) in the JobDataMap. This just calls run() on the service and does any cleanup. I need to tidy up the job creation part but you could easily get to the point where you had something like: public static void contributeSchedulerService(ConfigurationJobInfo config, MyService service) { config.add(new JobInfo(0 0/30 * * * ?, service)); } (where MyService implements Runnable and JobInfo is just a simple DTO) Here is the TapestryJobCreator... public class TapestryJobCreator implements Job { private static final Logger logger=LoggerFactory.getLogger(TapestryJobCreator.class); public void execute(JobExecutionContext context) throws JobExecutionException { logger.info(Executing job); PerthreadManager perthreadManager = (PerthreadManager) context .getJobDetail().getJobDataMap().get(perThreadManager); Runnable runner = (Runnable) context .getJobDetail().getJobDataMap().get(runner); try { runner.run(); } finally { logger.info(Doing cleanup); perthreadManager.cleanup(); } } } Hope it helps, Alfie. -Original Message- From: Daniel Henze [mailto:dhe...@googlemail.com] Sent: 12 July 2010 21:21 To: Tapestry users Subject: Quartz Job setup with JobDetails requires parameter free constructor - how to inject Service bindings Hi there, I am using chenillekit-quartz integration and followed the example setup on the module homepage (http://chenillekit.codehaus.org/chenillekit-quartz/index.html). All good so far, got things up and running. But now I want to run a job that has other services (DAO, MailService) as dependencies. Setup is done via JobDetails class which uses a parameter free constructor to instantiate the implementation of an Interface: new JobDetail(MailSenderJob, null, MailSenderJob.class) I tried binding that clas (MailSenderJob) with build method in Application module and @Inject annotation, but nothing did work, always getting a NullpointerException when it comes to that service. I also could not find a JobDetail constructor that allows for setting dependencies, but no luck. How can I get the service dependencies in MailSenderJob set up since Quartz does only use default constructor? Thankful for any hints Daniel - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Quartz Job setup with JobDetails requires parameter free constructor - how to inject Service bindings
Hi there, I am using chenillekit-quartz integration and followed the example setup on the module homepage (http://chenillekit.codehaus.org/chenillekit-quartz/index.html). All good so far, got things up and running. But now I want to run a job that has other services (DAO, MailService) as dependencies. Setup is done via JobDetails class which uses a parameter free constructor to instantiate the implementation of an Interface: new JobDetail(MailSenderJob, null, MailSenderJob.class) I tried binding that clas (MailSenderJob) with build method in Application module and @Inject annotation, but nothing did work, always getting a NullpointerException when it comes to that service. I also could not find a JobDetail constructor that allows for setting dependencies, but no luck. How can I get the service dependencies in MailSenderJob set up since Quartz does only use default constructor? Thankful for any hints Daniel - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: Quartz Job setup with JobDetails requires parameter free constructor - how to inject Service bindings
You create a JobSchedulingBundle (service), create a JobDataMap in it, add all the services to the map you need in your Job and then then get the map via executionContext.getMergedJobDataMap(). The concept behind JobDataMap is solid but you could arguably make a tighter and easier-to-use Tapestry-specific integration for Quartz. I'd love to be able to do just: configuration.add(0 0 0 * * ?, myJob); But I'm too lazy/busy to work on it myself since even the current Chenillekit-provided integration works fine with the expense of a few redundant lines of code. Kalle make On Mon, Jul 12, 2010 at 1:20 PM, Daniel Henze dhe...@googlemail.com wrote: Hi there, I am using chenillekit-quartz integration and followed the example setup on the module homepage (http://chenillekit.codehaus.org/chenillekit-quartz/index.html). All good so far, got things up and running. But now I want to run a job that has other services (DAO, MailService) as dependencies. Setup is done via JobDetails class which uses a parameter free constructor to instantiate the implementation of an Interface: new JobDetail(MailSenderJob, null, MailSenderJob.class) I tried binding that clas (MailSenderJob) with build method in Application module and @Inject annotation, but nothing did work, always getting a NullpointerException when it comes to that service. I also could not find a JobDetail constructor that allows for setting dependencies, but no luck. How can I get the service dependencies in MailSenderJob set up since Quartz does only use default constructor? Thankful for any hints Daniel - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org