You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@apache.org on 2002/02/27 02:17:01 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources BaseDirContext.java FileDirContext.java ProxyDirContext.java WARDirContext.java

craigmcc    02/02/26 17:17:01

  Modified:    catalina/src/share/org/apache/catalina/core
                        StandardContext.java StandardHostDeployer.java
               catalina/src/share/org/apache/naming/resources
                        BaseDirContext.java FileDirContext.java
                        ProxyDirContext.java WARDirContext.java
  Log:
  Fix the process of undeploying a web applcation (in StandardContext.stop())
  so that, if the application is deployed from a WAR file instead of an
  unpacked directory, the WAR file is actually closed.  Otherwise, you run into
  problems trying to redeploy a WAR file from the same pathname (on Unix, you
  see the old webapp again because the old WAR is still open, on Windows you
  get errors trying to write onto a WAR file open for reading).
  
  Revision  Changes    Path
  1.98      +24 -5     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java
  
  Index: StandardContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
  retrieving revision 1.97
  retrieving revision 1.98
  diff -u -r1.97 -r1.98
  --- StandardContext.java	20 Feb 2002 08:29:56 -0000	1.97
  +++ StandardContext.java	27 Feb 2002 01:17:00 -0000	1.98
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.97 2002/02/20 08:29:56 remm Exp $
  - * $Revision: 1.97 $
  - * $Date: 2002/02/20 08:29:56 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.98 2002/02/27 01:17:00 craigmcc Exp $
  + * $Revision: 1.98 $
  + * $Date: 2002/02/27 01:17:00 $
    *
    * ====================================================================
    *
  @@ -98,9 +98,10 @@
   import org.apache.naming.ResourceRef;
   import org.apache.naming.ResourceEnvRef;
   import org.apache.naming.TransactionRef;
  +import org.apache.naming.resources.BaseDirContext;
   import org.apache.naming.resources.FileDirContext;
  +import org.apache.naming.resources.ProxyDirContext;
   import org.apache.naming.resources.WARDirContext;
  -import org.apache.naming.resources.BaseDirContext;
   import org.apache.naming.resources.DirContextURLStreamHandler;
   import org.apache.catalina.Container;
   import org.apache.catalina.ContainerListener;
  @@ -146,7 +147,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.97 $ $Date: 2002/02/20 08:29:56 $
  + * @version $Revision: 1.98 $ $Date: 2002/02/27 01:17:00 $
    */
   
   public class StandardContext
  @@ -3565,6 +3566,24 @@
               if ((loader != null) && (loader instanceof Lifecycle)) {
                   ((Lifecycle) loader).stop();
               }
  +
  +            // Release our resources DirContext
  +            DirContext dirContext = resources;
  +            if ((dirContext != null) &&
  +                (dirContext instanceof ProxyDirContext)) {
  +                dirContext = ((ProxyDirContext) dirContext).getDirContext();
  +            }
  +            if (dirContext != null) {
  +                if (debug >= 1) {
  +                    log("Releasing document base " + docBase);
  +                }
  +                if (dirContext instanceof BaseDirContext) {
  +                    ((BaseDirContext) dirContext).release();
  +                } else {
  +                    log("Cannot release " + resources);
  +                }
  +            }
  +
   
           } finally {
   
  
  
  
  1.4       +12 -7     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java
  
  Index: StandardHostDeployer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StandardHostDeployer.java	27 Jan 2002 21:11:20 -0000	1.3
  +++ StandardHostDeployer.java	27 Feb 2002 01:17:00 -0000	1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java,v 1.3 2002/01/27 21:11:20 remm Exp $
  - * $Revision: 1.3 $
  - * $Date: 2002/01/27 21:11:20 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java,v 1.4 2002/02/27 01:17:00 craigmcc Exp $
  + * $Revision: 1.4 $
  + * $Date: 2002/02/27 01:17:00 $
    *
    * ====================================================================
    *
  @@ -78,6 +78,7 @@
   import org.apache.catalina.Container;
   import org.apache.catalina.Context;
   import org.apache.catalina.Deployer;
  +import org.apache.catalina.Globals;
   import org.apache.catalina.Lifecycle;
   import org.apache.catalina.LifecycleException;
   import org.apache.catalina.LifecycleListener;
  @@ -93,7 +94,7 @@
    * <code>StandardHost</code> implementation class.</p>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.3 $ $Date: 2002/01/27 21:11:20 $
  + * @version $Revision: 1.4 $ $Date: 2002/02/27 01:17:00 $
    */
   
   public class StandardHostDeployer implements Deployer {
  @@ -229,7 +230,9 @@
           host.log(sm.getString("standardHost.installing", contextPath, url));
   
           // Expand a WAR archive into an unpacked directory if needed
  -        if (host.isUnpackWARs()) {
  +        // NOTE:  If the user supplies a "jar:file:" URL, assume that
  +        // they do not want WAR expansion even if unpackWARs is set
  +        if (host.isUnpackWARs() && !url.startsWith("jar:file:")) {
   
               if (url.startsWith("jar:"))
                   docBase = expand(war);
  @@ -450,10 +453,14 @@
           if (!contextPath.equals("") && !contextPath.startsWith("/"))
               throw new IllegalArgumentException
                   (sm.getString("standardHost.pathFormat", contextPath));
  +
  +        // Locate the context and associated work directory
           Context context = findDeployedApp(contextPath);
           if (context == null)
               throw new IllegalArgumentException
                   (sm.getString("standardHost.pathMissing", contextPath));
  +        File workDir = (File) context.getServletContext().getAttribute
  +            (Globals.WORK_DIR_ATTR);
   
           // Remove this web application
           host.log(sm.getString("standardHost.removing", contextPath));
  @@ -726,7 +733,6 @@
        *
        * @exception IOException if an input/output error occurs
        */
  -    /*
       protected void remove(File dir) throws IOException {
   
           String list[] = dir.list();
  @@ -745,7 +751,6 @@
                                     dir.getAbsolutePath());
   
       }
  -    */
   
   
   }
  
  
  
  1.3       +12 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/BaseDirContext.java
  
  Index: BaseDirContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/BaseDirContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BaseDirContext.java	28 Sep 2001 02:25:09 -0000	1.2
  +++ BaseDirContext.java	27 Feb 2002 01:17:00 -0000	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/BaseDirContext.java,v 1.2 2001/09/28 02:25:09 remm Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/09/28 02:25:09 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/BaseDirContext.java,v 1.3 2002/02/27 01:17:00 craigmcc Exp $
  + * $Revision: 1.3 $
  + * $Date: 2002/02/27 01:17:00 $
    *
    * ====================================================================
    *
  @@ -85,7 +85,7 @@
    * Directory Context implementation helper class.
    *
    * @author Remy Maucherat
  - * @version $Revision: 1.2 $ $Date: 2001/09/28 02:25:09 $
  + * @version $Revision: 1.3 $ $Date: 2002/02/27 01:17:00 $
    */
   
   public abstract class BaseDirContext implements DirContext {
  @@ -265,6 +265,14 @@
   
   
       // --------------------------------------------------------- Public Methods
  +
  +
  +    /**
  +     * Release any resources allocated for this directory context.
  +     */
  +    public void release() {
  +        ; // No action taken by the default implementation
  +    }
   
   
       // -------------------------------------------------------- Context Methods
  
  
  
  1.10      +17 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java
  
  Index: FileDirContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FileDirContext.java	31 Oct 2001 18:58:36 -0000	1.9
  +++ FileDirContext.java	27 Feb 2002 01:17:00 -0000	1.10
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.9 2001/10/31 18:58:36 remm Exp $
  - * $Revision: 1.9 $
  - * $Date: 2001/10/31 18:58:36 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.10 2002/02/27 01:17:00 craigmcc Exp $
  + * $Revision: 1.10 $
  + * $Date: 2002/02/27 01:17:00 $
    *
    * ====================================================================
    *
  @@ -99,7 +99,7 @@
    * Filesystem Directory Context implementation helper class.
    *
    * @author Remy Maucherat
  - * @version $Revision: 1.9 $ $Date: 2001/10/31 18:58:36 $
  + * @version $Revision: 1.10 $ $Date: 2002/02/27 01:17:00 $
    */
   
   public class FileDirContext extends BaseDirContext {
  @@ -209,6 +209,19 @@
   
   
       // --------------------------------------------------------- Public Methods
  +
  +
  +    /**
  +     * Release any resources allocated for this directory context.
  +     */
  +    public void release() {
  +
  +        caseSensitive = true;
  +        absoluteBase = null;
  +        base = null;
  +        super.release();
  +
  +    }
   
   
       // -------------------------------------------------------- Context Methods
  
  
  
  1.11      +12 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/ProxyDirContext.java
  
  Index: ProxyDirContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/ProxyDirContext.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ProxyDirContext.java	9 Oct 2001 02:49:04 -0000	1.10
  +++ ProxyDirContext.java	27 Feb 2002 01:17:00 -0000	1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/ProxyDirContext.java,v 1.10 2001/10/09 02:49:04 remm Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/10/09 02:49:04 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/ProxyDirContext.java,v 1.11 2002/02/27 01:17:00 craigmcc Exp $
  + * $Revision: 1.11 $
  + * $Date: 2002/02/27 01:17:00 $
    *
    * ====================================================================
    *
  @@ -85,7 +85,7 @@
    * Proxy Directory Context implementation.
    *
    * @author Remy Maucherat
  - * @version $Revision: 1.10 $ $Date: 2001/10/09 02:49:04 $
  + * @version $Revision: 1.11 $ $Date: 2002/02/27 01:17:00 $
    */
   
   public class ProxyDirContext implements DirContext {
  @@ -198,6 +198,14 @@
   
   
       // --------------------------------------------------------- Public Methods
  +
  +
  +    /**
  +     * Return the actual directory context we are wrapping.
  +     */
  +    public DirContext getDirContext() {
  +        return this.dirContext;
  +    }
   
   
       /**
  
  
  
  1.4       +28 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/WARDirContext.java
  
  Index: WARDirContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/WARDirContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WARDirContext.java	16 Aug 2001 01:20:05 -0000	1.3
  +++ WARDirContext.java	27 Feb 2002 01:17:00 -0000	1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/WARDirContext.java,v 1.3 2001/08/16 01:20:05 craigmcc Exp $
  - * $Revision: 1.3 $
  - * $Date: 2001/08/16 01:20:05 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/WARDirContext.java,v 1.4 2002/02/27 01:17:00 craigmcc Exp $
  + * $Revision: 1.4 $
  + * $Date: 2002/02/27 01:17:00 $
    *
    * ====================================================================
    *
  @@ -100,7 +100,7 @@
    * WAR Directory Context implementation.
    *
    * @author Remy Maucherat
  - * @version $Revision: 1.3 $ $Date: 2001/08/16 01:20:05 $
  + * @version $Revision: 1.4 $ $Date: 2002/02/27 01:17:00 $
    */
   
   public class WARDirContext extends BaseDirContext {
  @@ -188,6 +188,30 @@
           super.setDocBase(docBase);
   
           loadEntries();
  +
  +    }
  +
  +
  +    // --------------------------------------------------------- Public Methods
  +
  +
  +    /**
  +     * Release any resources allocated for this directory context.
  +     */
  +    public void release() {
  +
  +        entries = null;
  +        if (base != null) {
  +            try {
  +                base.close();
  +            } catch (IOException e) {
  +                System.out.println
  +                    ("Exception closing WAR File " + base.getName());
  +                e.printStackTrace(System.out);
  +            }
  +        }
  +        base = null;
  +        super.release();
   
       }
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>