You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/04/12 18:49:02 UTC

svn commit: r393508 - /incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java

Author: gnodet
Date: Wed Apr 12 09:48:52 2006
New Revision: 393508

URL: http://svn.apache.org/viewcvs?rev=393508&view=rev
Log:
Thread context class loader must be set when calling component lifecycle methods

Modified:
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java?rev=393508&r1=393507&r2=393508&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java Wed Apr 12 09:48:52 2006
@@ -279,7 +279,13 @@
             init();
         }
         if (!isStarted()) {
-            getLifeCycle().start();
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(getLifeCycle().getClass().getClassLoader());
+                getLifeCycle().start();
+            } finally {
+                Thread.currentThread().setContextClassLoader(loader);
+            }
             super.start();
             initServiceAssemblies();
             startServiceAssemblies();
@@ -296,7 +302,13 @@
     public void doStop() throws javax.jbi.JBIException {
         if (isUnknown() || isStarted()) {
             stopServiceAssemblies();
-	        getLifeCycle().stop();
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(getLifeCycle().getClass().getClassLoader());
+                getLifeCycle().stop();
+            } finally {
+                Thread.currentThread().setContextClassLoader(loader);
+            }
 	        super.stop();
         }
         fireEvent(ComponentEvent.COMPONENT_STOPPED);
@@ -313,7 +325,13 @@
         if (!isUnknown() && !isShutDown()) {
             doStop();
             shutDownServiceAssemblies();
-            getLifeCycle().shutDown();
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(getLifeCycle().getClass().getClassLoader());
+                getLifeCycle().shutDown();
+            } finally {
+                Thread.currentThread().setContextClassLoader(loader);
+            }
             if (getDeliveryChannel() != null) {
                 getDeliveryChannel().close();
                 setDeliveryChannel(null);