Author: rmannibucau
Date: Tue Aug 21 18:21:11 2012
New Revision: 1375707

URL: http://svn.apache.org/viewvc?rev=1375707&view=rev
Log:
unscheduling trigger with app undeployment

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?rev=1375707&r1=1375706&r2=1375707&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
 Tue Aug 21 18:21:11 2012
@@ -207,6 +207,36 @@ public class EjbTimerServiceImpl impleme
     }
 
     public void shutdownMe() {
+        cleanTimerData();
+        shutdownMyScheduler();
+    }
+
+    private void cleanTimerData() {
+        if (timerStore == null || scheduler == null || deployment == null) {
+            return;
+        }
+
+        final Collection<TimerData> timerDatas = 
timerStore.getTimers(deployment.getDeploymentID().toString());
+        if (timerDatas == null) {
+            return;
+        }
+
+        for (TimerData data : timerDatas) {
+            final Trigger trigger = data.getTrigger();
+            if (trigger == null) {
+                continue;
+            }
+
+            final TriggerKey key = trigger.getKey();
+            try {
+                scheduler.unscheduleJob(key);
+            } catch (SchedulerException ignored) {
+                log.warning("An error occured deleting trigger '" + key + "' 
on bean " + deployment.getDeploymentID());
+            }
+        }
+    }
+
+    private void shutdownMyScheduler() {
         boolean defaultScheduler = false;
         final Scheduler ds = 
SystemInstance.get().getComponent(Scheduler.class);
         try { // == is the faster way to test, we rely on name (key in quartz 
registry) only for serialization


Reply via email to