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/01/27 20:39:42 UTC

svn commit: r1655133 - in /tomcat/trunk/java/org/apache/catalina: core/ webresources/

Author: markt
Date: Tue Jan 27 19:39:42 2015
New Revision: 1655133

URL: http://svn.apache.org/r1655133
Log:
Better comments

Modified:
    tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
    tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResource.java
    tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java
    tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java
    tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java
    tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1655133&r1=1655132&r2=1655133&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Tue Jan 27 19:39:42 2015
@@ -5216,7 +5216,11 @@ public class StandardContext extends Con
             broadcaster.sendNotification(notification);
         }
 
-        // Trigger clean-up of the resources
+        // The WebResources implementation caches references to JAR files. On
+        // some platforms these references may lock the JAR files. The
+        // WebResources implementaion cleans-up unused JAR file references every
+        // run of background processing but since web application start is
+        // likely to have read from lots of JARs, trigger a clean-up now.
         getResources().backgroundProcess();
 
         // Reinitializing if something went wrong

Modified: tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResource.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResource.java?rev=1655133&r1=1655132&r2=1655133&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResource.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResource.java Tue Jan 27 19:39:42 2015
@@ -214,6 +214,12 @@ public abstract class AbstractArchiveRes
 
     protected abstract JarInputStreamWrapper getJarInputStreamWrapper();
 
+    /**
+     * This wrapper assumes that the InputStream was created from a JarFile
+     * obtained from a call to getArchiveResourceSet().getJarFile(). If this is
+     * not the case then the usage counting in AbstractArchiveResourceSet will
+     * break and the JarFile may be unexpectedly closed.
+     */
     protected class JarInputStreamWrapper extends InputStream {
 
         private final JarEntry jarEntry;
@@ -258,8 +264,6 @@ public abstract class AbstractArchiveRes
 
         @Override
         public void close() throws IOException {
-            // Closing the JarFile releases the file lock on the JAR and also
-            // closes all input streams created from the JarFile.
             archiveResourceSet.closeJarFile();
         }
 

Modified: tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java?rev=1655133&r1=1655132&r2=1655133&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/AbstractArchiveResourceSet.java Tue Jan 27 19:39:42 2015
@@ -42,7 +42,6 @@ public abstract class AbstractArchiveRes
     private JarFile archive = null;
     private final Object archiveLock = new Object();
     private long archiveUseCount = 0;
-    private long archiveLastUsed = 0;
 
 
     protected final void setManifest(Manifest manifest) {
@@ -284,7 +283,6 @@ public abstract class AbstractArchiveRes
                 archive = new JarFile(getBase());
             }
             archiveUseCount++;
-            archiveLastUsed = System.currentTimeMillis();
             return archive;
         }
     }

Modified: tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java?rev=1655133&r1=1655132&r2=1655133&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/AbstractFileResourceSet.java Tue Jan 27 19:39:42 2015
@@ -126,8 +126,19 @@ public abstract class AbstractFileResour
         }
     }
 
+    /**
+     * {@inheritDoc}
+     * <p>
+     * This is a NO-OP by default for File based resource sets.
+     */
+    @Override
+    public void backgroundProcess() {
+        // NO-OP
+    }
+
 
     //-------------------------------------------------------- Lifecycle methods
+
     @Override
     protected void initInternal() throws LifecycleException {
         fileBase = new File(getBase(), getInternalPath());

Modified: tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java?rev=1655133&r1=1655132&r2=1655133&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/AbstractResourceSet.java Tue Jan 27 19:39:42 2015
@@ -111,11 +111,6 @@ public abstract class AbstractResourceSe
         this.staticOnly = staticOnly;
     }
 
-    @Override
-    public void backgroundProcess() {
-        // NO-OP
-    }
-
 
     //-------------------------------------------------------- Lifecycle methods
     @Override

Modified: tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java?rev=1655133&r1=1655132&r2=1655133&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/webresources/EmptyResourceSet.java Tue Jan 27 19:39:42 2015
@@ -152,13 +152,11 @@ public class EmptyResourceSet extends Li
         return true;
     }
 
-
     @Override
     public void backgroundProcess() {
         // NO-OP
     }
 
-
     @Override
     protected void initInternal() throws LifecycleException {
         // NO-OP



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