Works like this: In components.xml:
| <?xml version="1.0" encoding="UTF-8"?> | <components xmlns="http://jboss.com/products/seam/components" | ... | xmlns:async="http://jboss.com/products/seam/async" | ...> | | <async:quartz-dispatcher/> | ... | Startup class: | @Startup | @Stateful | @Scope(ScopeType.APPLICATION) | @Name("startupManager") | public class StartupManager implements StartupManagerLocal{ // create Interface | | @Logger | private Log log; | | @In(create = true) | private ProcessingActionLocal processingAction; | | private QuartzTriggerHandle handle = null; | | @Create | public void create() { | log.info("create(): called"); | // init | int delay = 20; // in seconds | long interval = 1000 * delay; | Calendar cal = Calendar.getInstance(); | cal.setTime(new Date()); | cal.add(Calendar.SECOND, delay); | // create Processing | long processingId = processingAction.createProcessing("serverJob"); | // schedule job and save handler | this.handle = processingAction.doServerJob(processingId, cal.getTime(), interval); | log.info("create(): id: #0", processingId); | } | | public QuartzTriggerHandle getHandle() { | return this.handle ; | } | | @Remove | public void destroy() { | } | } | The ProcessingAction (The ProcessingBean is not shown here): | @Stateful | @Name("processingAction") | public class ProcessingAction implements ProcessingActionLocal { // create Interface | | @Logger | private Log log; | | @In | private EntityManager entityManager; | | @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) | public long createProcessing(String string) { | // create Processing | ProcessingBean processing = new ProcessingBean(); | // managed context | entityManager.persist(processing); | processing.setName("serverJob"); | // return id | return processing.getId(); | } | | @Asynchronous | @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) | public QuartzTriggerHandle doServerJob(long processingId, @Expiration Date date, @IntervalDuration Long interval) { | log.info("doServerJob(): called"); | // get bean | ProcessingBean processing = entityManager.find(ProcessingBean.class, processingId); | // if exists remove | if (processing != null) { | entityManager.remove(processing); | log.info("doServerJob(): removed: id: #0", processingId); | } else { | // else stop server job | try { | startupManager.getHandle().cancel(); | } catch (Exception e) { | log.error("", e); | } | log.info("doServerJob(): stopped: id: #0", processingId); | } | // return new handle | return new QuartzTriggerHandle("serverJob"); | } | | @Remove | public void destroy() { | } | } | Let me know if it worked out... Greetz GHad View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4076537#4076537 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4076537 _______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
