axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Amila Suriarachchi <amilasuriarach...@gmail.com>
Subject Re: svn commit: r818290 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: context/ConfigurationContext.java engine/ListenerManager.java
Date Tue, 22 Dec 2009 08:58:40 GMT
On Tue, Dec 22, 2009 at 1:18 AM, Nikhil V Thaker <nikhil.v.thaker@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
> nvthaker@us.ibm.com
>
>
>
> On Thu, Sep 24, 2009 at 3:58 AM, <*nthaker@apache.org*<nthaker@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*<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
> *<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/*<http://amilachinthaka.blogspot.com/>
>
>


-- 
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/

Mime
View raw message