You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bi...@apache.org on 2003/04/17 09:41:18 UTC
cvs commit: jakarta-tomcat/src/admin/WEB-INF/classes/tadm TomcatAdmin.java
billbarker 2003/04/17 00:41:17
Modified: src/admin/WEB-INF/classes/tadm TomcatAdmin.java
Log:
Change to do proper reload (including pre-defined config).
Revision Changes Path
1.15 +57 -2 jakarta-tomcat/src/admin/WEB-INF/classes/tadm/TomcatAdmin.java
Index: TomcatAdmin.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/admin/WEB-INF/classes/tadm/TomcatAdmin.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- TomcatAdmin.java 4 Apr 2003 06:33:20 -0000 1.14
+++ TomcatAdmin.java 17 Apr 2003 07:41:16 -0000 1.15
@@ -82,8 +82,7 @@
if("addContext".equals( action ) )
addContext( cm, ctxHost, ctxPath, docBase );
if("restartContext".equals(action) && found) {
- removeContext(cm, ctx);
- addContext( cm, ctxHost, ctxPath, docBase);
+ restartContext(cm, ctx, req);
}
} catch (Exception ex ) {
ex.printStackTrace();
@@ -152,6 +151,62 @@
{
System.out.println("Removing " + ctx );
cm.removeContext( ctx );
+ }
+
+ private void restartContext( ContextManager cm, Context ctx,HttpServletRequest req )
+ throws TomcatException {
+ Request request = (Request)
+ req.getAttribute( Request.ATTRIB_REAL_REQUEST);
+ if( request == null ) {
+ throw new TomcatException("Untrusted Web-App");
+ }
+ synchronized(ctx) {
+ if(ctx.getState() == Context.STATE_NEW)
+ return ; // Already reloaded.
+ Vector sI=new Vector(); // saved local interceptors
+ BaseInterceptor[] eI; // all exisiting interceptors
+
+ // save the ones with the same context, they are local
+ eI=ctx.getContainer().getInterceptors();
+ for(int i=0; i < eI.length ; i++)
+ if(ctx == eI[i].getContext()) sI.addElement(eI[i]);
+
+ Enumeration e;
+
+ Context ctx1=cm.createContext();
+ ctx1.setContextManager( cm );
+ ctx1.setPath(ctx.getPath());
+ ctx1.setDocBase(ctx.getDocBase());
+ ctx1.setReloadable( ctx.getReloadable());
+ ctx1.setDebug( ctx.getDebug());
+ ctx1.setHost( ctx.getHost());
+ ctx1.setTrusted( ctx.isTrusted());
+ e=ctx.getHostAliases();
+ while( e.hasMoreElements())
+ ctx1.addHostAlias( (String)e.nextElement());
+
+ BaseInterceptor ri[] =
+ cm.getContainer().getInterceptors(Container.H_copyContext);
+ int i;
+ for( i=0; i < ri.length; i++) {
+ ri[i].copyContext(request, ctx, ctx1);
+ }
+ cm.removeContext( ctx );
+
+ cm.addContext( ctx1 );
+
+ // put back saved local interceptors
+ e=sI.elements();
+ while(e.hasMoreElements()){
+ BaseInterceptor savedI=(BaseInterceptor)e.nextElement();
+
+ ctx1.addInterceptor(savedI);
+ savedI.setContext(ctx1);
+ savedI.reload(request,ctx1);
+ }
+
+ ctx1.init();
+ }
}
private void setLogFile( Context ctx, String dest )
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org