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;
}