Konstantin Kolinko wrote:
> 2009/10/28  <ma...@apache.org>:
>> Author: markt
>> Date: Wed Oct 28 19:25:31 2009
>> New Revision: 830736
>>
>> URL: http://svn.apache.org/viewvc?rev=830736&view=rev
>> Log:
>> Add a workaround for a common cause of locked files.
>>
>> Modified:
>>    
>> tomcat/trunk/java/org/apache/catalina/core/JreMemoryLeakPreventionListener.java
>>    tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
>>
>> +             * Several components end up opening JarURLConnections without 
>> first
>> +             * disabling chaching. This effectively locks the file. Whilst 
>> more
> 
> A typo:
> 
> s/chaching/caching/

Fixed.

> 
>> +                URL url = new URL("jar:file://dummy.jar!/dummy.txt");
>> +                URLConnection uConn = url.openConnection();
>> +                uConn.setDefaultUseCaches(false);
> 
> What I can see from JDK sources as of 6u15,
> URLConnection#defaultUseCaches field is static and thus is shared by
> all subclasses.
> 
> Thus this setting will affect not only JAR files, but e.g.
> sun.net.www.protocol.http.HttpURLConnection#getInputStream()
> -- there is a getUseCaches() call, which determines whether the
> java.net.ResponseCache cache will be used or not.
>
> Even if we agree to include this feature in
> JreMemoryLeakPreventionListener, there should be an easy way to turn
> it off. Also I would propose to turn it off by default.

Happy with making it configurable. Not so sure about changing the
default. I see more issues with apps locking files that I see apps
making outbound connections.

> Regarding implementation:
> 
> The "file://dummy.jar" URL apparently is a relative one and references
> a file in the current working directory.  No file operations are
> actually performed in those calls, so I think that actually does not
> matter.

That was my thinking.

> I thought of an alternative implementation:  to create a dummy
> subclass of URLConnection, and call its setDefaultUseCaches() method.
> But using Mark's method should be better, in view of possible Java API
> changes.
> 
> Also, "dummy.txt" part of the URL is not necessary. It would be
> sufficient to end the URL with "!/", see syntax here:
> http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html

I'll clean that up.

Cheers,

Mark




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

Reply via email to