And also is it correct not to shutdown modules if the listener manager exists?
Yes it is, also note that its incorrect that Listener Manager does not exist and a module is running. The fix addresses this issue. Thanks, Nikhil Thaker office: 919 254 9964 nvtha...@us.ibm.com Amila Suriarachchi <amilasuriarach...@gmail.com> 12/22/2009 03:58 AM Please respond to axis-dev@ws.apache.org To Nikhil V Thaker/Columbus/i...@ibmus cc axis2-...@ws.apache.org, axis-dev@ws.apache.org Subject Re: svn commit: r818290 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: context/ConfigurationContext.java engine/ListenerManager.java On Tue, Dec 22, 2009 at 1:18 AM, Nikhil V Thaker < nikhil.v.tha...@us.ibm.com> wrote: Amila -The shutdown for module and services will fail if the Listener exists and will cause the corresponding web module on an application server to hang. which module you talk about. I think it is upto the module author to avoid this problem. And also is it correct not to shutdown modules if the listener manager exists? thanks, Amila. The hanging of web module was the reason this fix was comlmitted. Thanks, Nikhil Thaker office: 919 254 9964 nvtha...@us.ibm.com On Thu, Sep 24, 2009 at 3:58 AM, <ntha...@apache.org> wrote: Author: nthaker Date: Wed Sep 23 22:28:27 2009 New Revision: 818290 URL: http://svn.apache.org/viewvc?rev=818290&view=rev Log: AXIS2-4507 Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/ListenerManager.java Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java?rev=818290&r1=818289&r2=818290&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java Wed Sep 23 22:28:27 2009 @@ -27,14 +27,17 @@ import org.apache.axis2.clustering.ClusteringConstants; import org.apache.axis2.clustering.management.NodeManager; import org.apache.axis2.clustering.state.StateManager; +import org.apache.axis2.description.AxisModule; import org.apache.axis2.description.AxisService; import org.apache.axis2.description.AxisServiceGroup; import org.apache.axis2.description.Parameter; import org.apache.axis2.engine.AxisConfiguration; import org.apache.axis2.engine.DependencyManager; import org.apache.axis2.engine.ListenerManager; +import org.apache.axis2.engine.ServiceLifeCycle; import org.apache.axis2.i18n.Messages; import org.apache.axis2.java.security.AccessController; +import org.apache.axis2.modules.Module; import org.apache.axis2.util.JavaUtils; import org.apache.axis2.util.threadpool.ThreadFactory; import org.apache.axis2.util.threadpool.ThreadPool; @@ -85,7 +88,8 @@ private String cachedServicePath = null; protected List<ContextListener> contextListeners; - + private boolean stopped = false; + /** * Constructor * @@ -727,7 +731,43 @@ serviceGroupContextMap.clear(); } } - + /** + * Called during shutdown to clean up all Contexts + */ + public void shutdownModulesAndServices() throws AxisFault{ + if(stopped){ + return; + } + /*Shut down the modules*/ + if(log.isDebugEnabled()){ + log.debug("Invoke modules shutdown."); + } + HashMap modules = axisConfiguration.getModules(); + if (modules != null) { + Iterator moduleitr = modules.values().iterator(); + while (moduleitr.hasNext()) { + AxisModule axisModule = (AxisModule) moduleitr.next(); + Module module = axisModule.getModule(); + if (module != null) { + module.shutdown(this); + } + } + } + cleanupContexts(); + /*Shut down the services*/ + if(log.isDebugEnabled()){ + log.debug("Invoke services shutdown."); + } + for (Iterator services = axisConfiguration.getServices().values().iterator(); + services.hasNext();) { + AxisService axisService = (AxisService) services.next(); + ServiceLifeCycle serviceLifeCycle = axisService.getServiceLifeCycle(); + if (serviceLifeCycle != null) { + serviceLifeCycle.shutDown(this, axisService); + } + } + stopped = true; + } /** * Invoked during shutdown to stop the ListenerManager and perform configuration cleanup * @@ -736,6 +776,14 @@ public void terminate() throws AxisFault { if (listenerManager != null) { listenerManager.stop(); + }else{ + if(log.isDebugEnabled()){ + log.debug("Start Invoke modules and services shutdown."); + } + shutdownModulesAndServices(); + if(log.isDebugEnabled()){ + log.debug("End Invoke modules and services shutdown."); + } } Why the service and module shutdown at the else part? Why it should not be done if a listener manager exists? thanks, Amila. -- Amila Suriarachchi WSO2 Inc. blog: http://amilachinthaka.blogspot.com/ -- Amila Suriarachchi WSO2 Inc. blog: http://amilachinthaka.blogspot.com/