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: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>