X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=trunk%2Fmythtv%2Ftimer%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Ftimer%2FTimerBean.java;h=5019ebd5c35136116f6b24c5e9bbff50e1db1b8b;hb=beaeec453a1548b250a1e01f72daf4f1b674dc1e;hp=b7ee2bf3da0eb4818c0033a65630092b283deb46;hpb=7fdeb4db9854a2fe238489199c5415440b767e96;p=utils diff --git a/trunk/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java b/trunk/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java index b7ee2bf3..5019ebd5 100644 --- a/trunk/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java +++ b/trunk/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java @@ -16,11 +16,17 @@ package org.wamblee.timer; +import java.util.Collection; + import javax.annotation.Resource; import javax.ejb.MessageDriven; import javax.ejb.Timeout; import javax.ejb.Timer; import javax.ejb.TimerService; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.ejb.TransactionManagement; +import javax.ejb.TransactionManagementType; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; @@ -34,8 +40,13 @@ import org.wamblee.io.DirectoryMonitor; /** * + * + * @author Erik Brakkee */ -@MessageDriven(mappedName = "jms/MythtvTimer") +@MessageDriven(name = "TimerBean") +// Spring's JTA transaction manager does not work with container managed transactions +// because it uses the UserTransaction object which glassfish forbids. +@TransactionManagement(TransactionManagementType.BEAN) public class TimerBean implements MessageListener { private static final Log LOG = LogFactory.getLog(TimerBean.class); @@ -52,7 +63,11 @@ public class TimerBean implements MessageListener { try { int interval = (Integer)msg.getObject(); LOG.info("Initializing timer with interval " + interval + " seconds"); - _timerService.createTimer(interval*1000, interval*1000, null); + for (Timer timer: (Collection)_timerService.getTimers()) { + LOG.info("Canceling old timers: " + timer); + timer.cancel(); + } + _timerService.createTimer(1000, interval*1000, null); } catch (JMSException e) { throw new RuntimeException(e.getMessage()); } @@ -60,7 +75,7 @@ public class TimerBean implements MessageListener { @Timeout private void timeout(Timer aTimer) { - LOG.debug("Timer expired!!!"); + LOG.info("Timer expired!!!"); try { DirectoryMonitor monitor = BeanKernel.getBeanFactory().find( DirectoryMonitor.class);