X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=mythtv%2Ftimer%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Ftimer%2FTimerBean.java;h=fffd74b892b206f734f9bbfc019d9926e77501e3;hb=28df2d5b254229d0244929342ec573f516f90938;hp=b7ee2bf3da0eb4818c0033a65630092b283deb46;hpb=f068b3e2c5cbb4498f5d223e97fb8e34cbae60cb;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 b7ee2bf3..fffd74b8 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; @@ -35,7 +41,10 @@ import org.wamblee.io.DirectoryMonitor; /** * */ -@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 +61,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 +73,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);