costin 2003/03/20 22:38:47 Modified: catalina/src/share/org/apache/catalina/core ContainerBase.java StandardContext.java Log: More work on reloading. It seems context can be stoped and started from the console, but when it starts again I get 404s. I suspect something related with the mapper. Remy - could you help me a bit ? Revision Changes Path 1.13 +15 -24 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ContainerBase.java Index: ContainerBase.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- ContainerBase.java 20 Mar 2003 18:28:28 -0000 1.12 +++ ContainerBase.java 21 Mar 2003 06:38:47 -0000 1.13 @@ -309,6 +309,7 @@ */ protected boolean started = false; + protected boolean initialized=false; /** * The property change support for this component. @@ -828,6 +829,8 @@ private void addChildInternal(Container child) { + if( log.isDebugEnabled() ) + log.debug("Add child " + child + " " + this); synchronized(children) { if (children.get(child.getName()) != null) throw new IllegalArgumentException("addChild: Child name '" + @@ -844,20 +847,6 @@ } } children.put(child.getName(), child); - if( child instanceof ContainerBase ) { - ContainerBase childCB=(ContainerBase)child; - // XXX we should also send JMX notifications - if( childCB.getObjectName() == null ) { - // child was not registered yet. -// ObjectName oname=childCB.createObjectName(this.getDomain(), -// this.getObjectName()); -// if( oname != null ) { -// // XXX Register the child -// -// } - - } - } fireContainerEvent(ADD_CHILD_EVENT, child); } @@ -1064,6 +1053,7 @@ return; children.remove(child.getName()); } + if (started && (child instanceof Lifecycle)) { try { if( child instanceof ContainerBase ) { @@ -1077,16 +1067,10 @@ log.error("ContainerBase.removeChild: stop: ", e); } } - if( child instanceof ContainerBase ) { - ContainerBase childCB=(ContainerBase)child; - // XXX we should also send JMX notifications - ObjectName oname=childCB.getObjectName(); - if( oname != null ) { - // XXX UnRegister the child - } - } + fireContainerEvent(REMOVE_CHILD_EVENT, child); - child.setParent(null); + + // child.setParent(null); } @@ -1313,6 +1297,11 @@ if (children[i] instanceof Lifecycle) ((Lifecycle) children[i]).stop(); } + // Remove children - so next start can work + children = findChildren(); + for (int i = 0; i < children.length; i++) { + removeChild(children[i]); + } // Stop our Mappers, if any Mapper mappers[] = findMappers(); @@ -1390,7 +1379,8 @@ mserver.invoke(parentName, "addChild", new Object[] { this }, new String[] {"org.apache.catalina.Container"}); } - } + } + initialized=true; } public ObjectName getParentName() throws MalformedObjectNameException { @@ -1401,6 +1391,7 @@ if( started ) { stop(); } + initialized=false; if (parent != null) { parent.removeChild(this); } 1.30 +21 -19 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java Index: StandardContext.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- StandardContext.java 20 Mar 2003 18:28:28 -0000 1.29 +++ StandardContext.java 21 Mar 2003 06:38:47 -0000 1.30 @@ -3754,6 +3754,13 @@ log.info(sm.getString("containerBase.alreadyStarted", logName())); return; } + if( !initialized ) { + try { + init(); + } catch( Exception ex ) { + throw new LifecycleException("Error initializaing ", ex); + } + } String logName="tomcat." + getParent().getName() + "." + ("".equals(getName()) ? "ROOT" : getName()) + ".Context"; @@ -4764,24 +4771,19 @@ public void init() throws Exception { - if( this.getParent() != null ) { - log.info( "Already configured" ); - return; - } - ObjectName parentName=getParentName(); - - log.info("Adding to " + parentName ); - - if( ! mserver.isRegistered(parentName)) { - log.info("No host, creating one "); - StandardHost host=new StandardHost(); - host.setName(hostName); - Registry.getRegistry().registerComponent(host, parentName, null); - mserver.invoke(parentName, "init", new Object[] {}, new String[] {} ); - } - ContextConfig config = new ContextConfig(); - this.addLifecycleListener(config); - + if( this.getParent() == null ) { + ObjectName parentName=getParentName(); + + if( ! mserver.isRegistered(parentName)) { + log.info("No host, creating one " + parentName); + StandardHost host=new StandardHost(); + host.setName(hostName); + Registry.getRegistry().registerComponent(host, parentName, null); + mserver.invoke(parentName, "init", new Object[] {}, new String[] {} ); + } + ContextConfig config = new ContextConfig(); + this.addLifecycleListener(config); + } super.init(); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]