You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/03/03 21:03:30 UTC

svn commit: r1663772 - in /tomcat/trunk/java/org/apache/catalina/startup: Constants.java ExpandWar.java HostConfig.java

Author: markt
Date: Tue Mar  3 20:03:29 2015
New Revision: 1663772

URL: http://svn.apache.org/r1663772
Log:
Additional follow-up to r1663715
- Use a Tomcat specific file located in META-INF to track the WAR modification time rather than using the expanded directory
- If the use expands the directory themselves, this tracking mechanism won;t be used.

Modified:
    tomcat/trunk/java/org/apache/catalina/startup/Constants.java
    tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java
    tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java

Modified: tomcat/trunk/java/org/apache/catalina/startup/Constants.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Constants.java?rev=1663772&r1=1663771&r2=1663772&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/Constants.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/Constants.java Tue Mar  3 20:03:29 2015
@@ -31,6 +31,7 @@ public final class Constants {
     public static final String DefaultWebXml = "conf/web.xml";
     public static final String HostContextXml = "context.xml.default";
     public static final String HostWebXml = "web.xml.default";
+    public static final String WarTracker = "/META-INF/war-tracker";
 
     /**
      * A dummy value used to suppress loading the default web.xml file.

Modified: tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java?rev=1663772&r1=1663771&r2=1663772&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java Tue Mar  3 20:03:29 2015
@@ -80,6 +80,7 @@ public class ExpandWar {
         // Set up the variables used in the finally block of the following try
         boolean success = false;
         File docBase = new File(host.getAppBaseFile(), pathname);
+        File warTracker = new File(host.getAppBaseFile(), pathname + Constants.WarTracker);
 
         try (JarFile jarFile = juc.getJarFile()) {
 
@@ -92,10 +93,9 @@ public class ExpandWar {
                 // time of the expanded directory to the last modified time of
                 // the WAR so changes to the WAR while Tomcat is stopped can be
                 // detected
-                long dirLastModified = docBase.lastModified();
-
-                if (dirLastModified == warLastModified) {
-                    // No changes to the WAR
+                if (!warTracker.exists() || warTracker.lastModified() == warLastModified) {
+                    // No (detectable) changes to the WAR
+                    success = true;
                     return (docBase.getAbsolutePath());
                 }
 
@@ -157,9 +157,10 @@ public class ExpandWar {
                     }
                 }
 
-                // Align the last modified time of the directory with the WAR so
-                // changes to the WAR while Tomcat is stopped can be detected
-                docBase.setLastModified(warLastModified);
+                // Create the warTracker file and align the last modified time
+                // with the last modified time of the WAR
+                warTracker.createNewFile();
+                warTracker.setLastModified(warLastModified);
             }
             success = true;
         } catch (IOException e) {

Modified: tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java?rev=1663772&r1=1663771&r2=1663772&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java Tue Mar  3 20:03:29 2015
@@ -776,6 +776,9 @@ public class HostConfig
         File xml = new File(host.getAppBaseFile(),
                 cn.getBaseName() + "/" + Constants.ApplicationContextXml);
 
+        File warTracker = new File(host.getAppBaseFile(),
+                cn.getBaseName() + "/" + Constants.WarTracker);
+
         boolean xmlInWar = false;
         JarEntry entry = null;
         try (JarFile jar = new JarFile(war)) {
@@ -793,10 +796,10 @@ public class HostConfig
         // should only be used if the directory is not out of date and
         // unpackWARs is true. Note the code below may apply further limits
         boolean useXml = false;
-        File expandedDir = new File(host.getAppBaseFile(), cn.getBaseName());
         // If the xml file exists then expandedDir must exists so no need to
         // test that here
-        if (xml.exists() && unpackWARs && expandedDir.lastModified() == war.lastModified()) {
+        if (xml.exists() && unpackWARs &&
+                (!warTracker.exists() || warTracker.lastModified() == war.lastModified())) {
             useXml = true;
         }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org