costin      01/03/07 15:48:59

  Modified:    src/share/org/apache/tomcat/modules/config AutoDeploy.java
  Log:
  Added 1/2 of the code to support "reloadable", tested it ( i.e. the
  change in .war is detected ).
  
  Reloading still needs more testing, the first request after a reload
  seems to get 503.
  
  Revision  Changes    Path
  1.4       +42 -4     
jakarta-tomcat/src/share/org/apache/tomcat/modules/config/AutoDeploy.java
  
  Index: AutoDeploy.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/config/AutoDeploy.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AutoDeploy.java   2001/02/20 03:16:51     1.3
  +++ AutoDeploy.java   2001/03/07 23:48:58     1.4
  @@ -61,6 +61,7 @@
   
   import org.apache.tomcat.core.*;
   import org.apache.tomcat.util.io.FileUtil;
  +import org.apache.tomcat.util.depend.*;
   import java.io.*;
   import java.net.*;
   import java.util.*;
  @@ -81,7 +82,11 @@
   
       String src="webapps";
       String dest="webapps";
  +    boolean redeploy=false;
   
  +    // map destination dir ( used in Ctx docBase ) -> File ( war source)
  +    Hashtable expanded=new Hashtable();
  +    
       public AutoDeploy() {
       }
   
  @@ -112,10 +117,9 @@
   
       /**
        *  Re-deploy the context if the war file is modified.
  -     *  XXX Not implemented.
        */
       public void setRedeploy( boolean b ) {
  -
  +     redeploy=b;
       }
       
       //-------------------- Implementation --------------------
  @@ -178,19 +182,53 @@
        String fname=name.substring(0, name.length()-4);
   
        File appDir=new File( destD, fname);
  +     File srcF=new File( srcD, name );
  +     File destF=new File( destD, fname );
  +     expanded.put( destF.getAbsolutePath(),  srcF );
  +
        if( ! appDir.exists() ) {
            // no check if war file is "newer" than directory 
            // To update you need to "remove" the context first!!!
            appDir.mkdirs();
            // Expand war file
            try {
  -             FileUtil.expand(srcD.getAbsolutePath() + "/" + name,
  -                             destD.getAbsolutePath() + "/" + fname );
  +             FileUtil.expand(srcF.getAbsolutePath(), 
  +                             destF.getAbsolutePath() );
  +
            } catch( IOException ex) {
                log("expanding webapp " + name, ex);
                // do what ?
            }
        }
  +    }
  +
  +    public void contextInit( Context context)
  +     throws TomcatException
  +    {
  +     if( redeploy ) {
  +         String ctxBase=context.getAbsolutePath();
  +         File warFile=(File)expanded.get( ctxBase );
  +         if( warFile == null || ! warFile.exists() )
  +             return;
  +         
  +         DependManager dm=(DependManager)context.getContainer().
  +             getNote("DependManager");
  +         if( dm!=null ) {
  +             log( "Adding dependency " + context + " -> " +  warFile );
  +             Dependency dep=new Dependency();
  +             dep.setTarget("web.xml");
  +             dep.setOrigin( warFile );
  +             dep.setLastModified( warFile.lastModified() );
  +             dm.addDependency( dep );
  +             context.getContainer().setNote( "autoDeploy.war", warFile );
  +         }
  +     }
  +    }
  +    
  +    public void reload( Request req, Context context) throws TomcatException {
  +     File war=(File)context.getContainer().getNote( "autoDeploy.war" );
  +     if( war==null ) return;
  +     log( "XXX not implemented - need to re-expand " + war ); 
       }
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to