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;
     }
 
     /**