You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2007/11/13 14:43:42 UTC
svn commit: r594535 - in
/incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix:
Main.java jbi/container/SpringJBIContainer.java
Author: gertv
Date: Tue Nov 13 05:43:42 2007
New Revision: 594535
URL: http://svn.apache.org/viewvc?rev=594535&view=rev
Log:
SM-1132: Adding a shutdown handler to SpringJBIContainer
Modified:
incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/Main.java
incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SpringJBIContainer.java
Modified: incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/Main.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/Main.java?rev=594535&r1=594534&r2=594535&view=diff
==============================================================================
--- incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/Main.java (original)
+++ incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/Main.java Tue Nov 13 05:43:42 2007
@@ -19,6 +19,7 @@
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import java.util.Observer;
import org.apache.servicemix.jbi.container.SpringJBIContainer;
import org.apache.xbean.server.repository.FileSystemRepository;
@@ -48,7 +49,7 @@
System.out.println("Starting Apache ServiceMix ESB" + version);
System.out.println();
- ApplicationContext context = null;
+ final ApplicationContext context;
if (args.length <= 0) {
System.out.println("Loading Apache ServiceMix from servicemix.xml on the CLASSPATH");
context = new ClassPathXmlApplicationContext("servicemix.xml");
@@ -66,17 +67,20 @@
System.out.println("Loading Apache ServiceMix from file: " + file);
context = new FileSystemXmlApplicationContext(file, processors);
}
- SpringJBIContainer container = (SpringJBIContainer) context.getBean("jbi");
- Object lock = new Object();
- container.setShutdownLock(lock);
-
- // lets wait until we're killed.
- synchronized (lock) {
- lock.wait();
- }
- if (context instanceof DisposableBean) {
- ((DisposableBean) context).destroy();
- }
+ SpringJBIContainer container = (SpringJBIContainer) context.getBean("jbi");
+ container.onShutDown(new Runnable() {
+ public void run() {
+ if (context instanceof DisposableBean) {
+ try {
+ ((DisposableBean) context).destroy();
+ } catch (Exception e) {
+ System.out.println("Caught: " + e);
+ e.printStackTrace();
+ }
+ }
+ }
+ });
+
} catch (Exception e) {
System.out.println("Caught: " + e);
e.printStackTrace();
Modified: incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SpringJBIContainer.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SpringJBIContainer.java?rev=594535&r1=594534&r2=594535&view=diff
==============================================================================
--- incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SpringJBIContainer.java (original)
+++ incubator/servicemix/trunk/core/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/SpringJBIContainer.java Tue Nov 13 05:43:42 2007
@@ -58,9 +58,9 @@
private ApplicationContext applicationContext;
private String[] deployArchives;
private DeploySupport[] deployments;
- private Object shutdownLock;
private Map components;
private Map endpoints;
+ private Runnable onShutDown;
public void afterPropertiesSet() throws Exception {
init();
@@ -304,19 +304,22 @@
}
public void shutDown() throws JBIException {
- if (shutdownLock != null) {
- synchronized (shutdownLock) {
- shutdownLock.notify();
- }
+ if (onShutDown != null) {
+ onShutDown.run();
+ } else {
+ //no shutdown handler has been set
+ //shutting down the container ourselves
+ super.shutDown();
}
}
/**
- * @param lock
- * @org.apache.xbean.Property hidden="true"
+ * Set a {@link Runnable} which can handle the shutdown of the container
+ *
+ * @param runnable the shutdown handler
*/
- public void setShutdownLock(Object lock) {
- this.shutdownLock = lock;
+ public void onShutDown(Runnable runnable) {
+ this.onShutDown = runnable;
}
/**