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