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