Author: veithen Date: Wed May 14 20:20:43 2014 New Revision: 1594701 URL: http://svn.apache.org/r1594701 Log: AXIS2-5646: Fixed an IllegalStateException triggered during shutdown of the Axis2 OSGi module: * Applied the patch submitted by Andy Schmidt (with some minor formatting changes). * Enabled the regression test for this issue.
Modified: axis/axis2/java/core/trunk/modules/osgi-tests/src/test/java/OSGiTest.java axis/axis2/java/core/trunk/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiConfigurationContextFactory.java Modified: axis/axis2/java/core/trunk/modules/osgi-tests/src/test/java/OSGiTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/osgi-tests/src/test/java/OSGiTest.java?rev=1594701&r1=1594700&r2=1594701&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/osgi-tests/src/test/java/OSGiTest.java (original) +++ axis/axis2/java/core/trunk/modules/osgi-tests/src/test/java/OSGiTest.java Wed May 14 20:20:43 2014 @@ -113,10 +113,8 @@ public class OSGiTest { serviceClient.setOptions(options); OMElement result = serviceClient.sendReceive(payload); assertEquals("getVersionResponse", result.getLocalName()); - // Stop the Axis2 bundle explicitly here so that we can test that it cleanly shuts down - getAxis2Bundle(container).stop(); - // TODO: Test for AXIS2-5646 -// stopBundle(getAxis2Bundle(container)); + // Stop the Axis2 bundle explicitly here so that we can test that it cleanly shuts down (see AXIS2-5646) + stopBundle(getAxis2Bundle(container)); } finally { container.stop(); } Modified: axis/axis2/java/core/trunk/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiConfigurationContextFactory.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiConfigurationContextFactory.java?rev=1594701&r1=1594700&r2=1594701&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiConfigurationContextFactory.java (original) +++ axis/axis2/java/core/trunk/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiConfigurationContextFactory.java Wed May 14 20:20:43 2014 @@ -56,6 +56,8 @@ public class OSGiConfigurationContextFac private ServiceRegistration mngServiceRegistration; + private ServiceRegistration transportServiceRegistration; + private ConfigurationContext configCtx; private ServiceRegistration configCtxServiceRegistration; @@ -72,6 +74,14 @@ public class OSGiConfigurationContextFac } public synchronized void stop() { + if (configCtxServiceRegistration != null) { + configCtxServiceRegistration.unregister(); + } + + if (transportServiceRegistration != null) { + transportServiceRegistration.unregister(); + } + if (mngServiceRegistration != null) { mngServiceRegistration.unregister(); } @@ -120,7 +130,7 @@ public class OSGiConfigurationContextFac Dictionary prop = new Properties(); prop.put(PROTOCOL, "http"); //adding the default listener - context.registerService(TransportListener.class.getName(), new HttpListener(context), + transportServiceRegistration = context.registerService(TransportListener.class.getName(), new HttpListener(context), prop); log.info("Axis2 environment has started."); } catch (AxisFault e) {