You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2001/06/19 04:20:32 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup ContextConfig.java

remm        01/06/18 19:20:32

  Modified:    catalina/src/share/org/apache/catalina/startup
                        ContextConfig.java
  Log:
  - Stopping and starting any of the Catalina components is broken at the moment,
    because the component is not reinitialized.
  - This fixes the problem (at least partially) for a Context.
  - I think this code should be moved to the container itself. I suggest adding
    either a new Container.recycle() method or a new Lifecycle.recycle() method.
  
  Revision  Changes    Path
  1.47      +148 -5    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/ContextConfig.java
  
  Index: ContextConfig.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/ContextConfig.java,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- ContextConfig.java	2001/05/31 03:56:11	1.46
  +++ ContextConfig.java	2001/06/19 02:20:32	1.47
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/ContextConfig.java,v 1.46 2001/05/31 03:56:11 remm Exp $
  - * $Revision: 1.46 $
  - * $Date: 2001/05/31 03:56:11 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/ContextConfig.java,v 1.47 2001/06/19 02:20:32 remm Exp $
  + * $Revision: 1.47 $
  + * $Date: 2001/06/19 02:20:32 $
    *
    * ====================================================================
    *
  @@ -106,6 +106,14 @@
   import org.apache.catalina.core.StandardContext;
   import org.apache.catalina.deploy.LoginConfig;
   import org.apache.catalina.deploy.SecurityConstraint;
  +import org.apache.catalina.deploy.ApplicationParameter;
  +import org.apache.catalina.deploy.ContextEjb;
  +import org.apache.catalina.deploy.ContextEnvironment;
  +import org.apache.catalina.deploy.ErrorPage;
  +import org.apache.catalina.deploy.FilterDef;
  +import org.apache.catalina.deploy.FilterMap;
  +import org.apache.catalina.deploy.ContextLocalEjb;
  +import org.apache.catalina.deploy.ContextResource;
   import org.apache.catalina.loader.Extension;
   import org.apache.catalina.util.StringManager;
   import org.apache.catalina.util.xml.SaxContext;
  @@ -120,7 +128,7 @@
    * of that Context, and the associated defined servlets.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.46 $ $Date: 2001/05/31 03:56:11 $
  + * @version $Revision: 1.47 $ $Date: 2001/06/19 02:20:32 $
    */
   
   public final class ContextConfig
  @@ -859,10 +867,145 @@
       /**
        * Process a "stop" event for this Context.
        */
  -    private void stop() {
  +    private synchronized void stop() {
   
   	if (debug > 0)
   	    log(sm.getString("contextConfig.stop"));
  +
  +        int i;
  +
  +        // Removing children
  +        Container[] children = context.findChildren();
  +        for (i = 0; i < children.length; i++) {
  +            context.removeChild(children[i]);
  +        }
  +
  +        // FIXME : remove mappers ?
  +
  +        // Removing application listeners
  +        String[] applicationListeners = context.findApplicationListeners();
  +        for (i = 0; i < applicationListeners.length; i++) {
  +            context.removeApplicationListener(applicationListeners[i]);
  +        }
  +
  +        // Removing application parameters
  +        ApplicationParameter[] applicationParameters = 
  +            context.findApplicationParameters();
  +        for (i = 0; i < applicationParameters.length; i++) {
  +            context.removeApplicationParameter
  +                (applicationParameters[i].getName());
  +        }
  +
  +        // Removing security constraints
  +        SecurityConstraint[] securityConstraints = context.findConstraints();
  +        for (i = 0; i < securityConstraints.length; i++) {
  +            context.removeConstraint(securityConstraints[i]);
  +        }
  +
  +        // Removing Ejbs
  +        ContextEjb[] contextEjbs = context.findEjbs();
  +        for (i = 0; i < contextEjbs.length; i++) {
  +            context.removeEjb(contextEjbs[i].getName());
  +        }
  +
  +        // Removing environments
  +        ContextEnvironment[] contextEnvironments = context.findEnvironments();
  +        for (i = 0; i < contextEnvironments.length; i++) {
  +            context.removeEnvironment(contextEnvironments[i].getName());
  +        }
  +
  +        // Removing errors pages
  +        ErrorPage[] errorPages = context.findErrorPages();
  +        for (i = 0; i < errorPages.length; i++) {
  +            context.removeErrorPage(errorPages[i]);
  +        }
  +
  +        // Removing filter defs
  +        FilterDef[] filterDefs = context.findFilterDefs();
  +        for (i = 0; i < filterDefs.length; i++) {
  +            context.removeFilterDef(filterDefs[i]);
  +        }
  +
  +        // Removing filter maps
  +        FilterMap[] filterMaps = context.findFilterMaps();
  +        for (i = 0; i < filterMaps.length; i++) {
  +            context.removeFilterMap(filterMaps[i]);
  +        }
  +
  +        // Removing instance listeners
  +        String[] instanceListeners = context.findInstanceListeners();
  +        for (i = 0; i < instanceListeners.length; i++) {
  +            context.removeInstanceListener(instanceListeners[i]);
  +        }
  +
  +        // Removing local ejbs
  +        ContextLocalEjb[] contextLocalEjbs = context.findLocalEjbs();
  +        for (i = 0; i < contextLocalEjbs.length; i++) {
  +            context.removeLocalEjb(contextLocalEjbs[i].getName());
  +        }
  +
  +        // Removing Mime mappings
  +        String[] mimeMappings = context.findMimeMappings();
  +        for (i = 0; i < mimeMappings.length; i++) {
  +            context.removeMimeMapping(mimeMappings[i]);
  +        }
  +
  +        // Removing parameters
  +        String[] parameters = context.findParameters();
  +        for (i = 0; i < parameters.length; i++) {
  +            context.removeParameter(parameters[i]);
  +        }
  +
  +        // Removing resource env refs
  +        String[] resourceEnvRefs = context.findResourceEnvRefs();
  +        for (i = 0; i < resourceEnvRefs.length; i++) {
  +            context.removeResourceEnvRef(resourceEnvRefs[i]);
  +        }
  +
  +        // Removing resources
  +        ContextResource[] contextResources = context.findResources();
  +        for (i = 0; i < contextResources.length; i++) {
  +            context.removeResource(contextResources[i].getName());
  +        }
  +
  +        // Removing sercurity role
  +        String[] securityRoles = context.findSecurityRoles();
  +        for (i = 0; i < securityRoles.length; i++) {
  +            context.removeSecurityRole(securityRoles[i]);
  +        }
  +
  +        // Removing servlet mappings
  +        String[] servletMappings = context.findServletMappings();
  +        for (i = 0; i < servletMappings.length; i++) {
  +            context.removeServletMapping(servletMappings[i]);
  +        }
  +
  +        // FIXME : Removing status pages
  +
  +        // Removing taglibs
  +        String[] taglibs = context.findTaglibs();
  +        for (i = 0; i < taglibs.length; i++) {
  +            context.removeTaglib(taglibs[i]);
  +        }
  +
  +        // Removing welcome files
  +        String[] welcomeFiles = context.findWelcomeFiles();
  +        for (i = 0; i < welcomeFiles.length; i++) {
  +            context.removeWelcomeFile(welcomeFiles[i]);
  +        }
  +
  +        // Removing wrapper lifecycles
  +        String[] wrapperLifecycles = context.findWrapperLifecycles();
  +        for (i = 0; i < wrapperLifecycles.length; i++) {
  +            context.removeWrapperLifecycle(wrapperLifecycles[i]);
  +        }
  +
  +        // Removing wrapper listeners
  +        String[] wrapperListeners = context.findWrapperListeners();
  +        for (i = 0; i < wrapperListeners.length; i++) {
  +            context.removeWrapperListener(wrapperListeners[i]);
  +        }
  +
           ok = true;
   
       }