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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org