X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=mythtv%2Ftimer%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Ftimer%2FTimerBean.java;h=5019ebd5c35136116f6b24c5e9bbff50e1db1b8b;hb=42515fd88bee97ebb3a3180fdcb320faf5fa1d91;hp=45e6e220fa1c3b968d54f0d616e6fd1538937855;hpb=795d6d72f85f95f73bd78d885ee743b187b5f3bd;p=utils diff --git a/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java b/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java index 45e6e220..5019ebd5 100644 --- a/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java +++ b/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(name = "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);