Added author to all java files with class comments.
[utils] / mythtv / timer / src / main / java / org / wamblee / timer / TimerBean.java
index 45e6e220fa1c3b968d54f0d616e6fd1538937855..5019ebd5c35136116f6b24c5e9bbff50e1db1b8b 100644 (file)
 
 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<Timer>)_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);