What a mess! For now we just have to restart Tomcat every time we
deploy a new build. We may not find a better solution, since even if
all of Felix's leaks are fixed, it's been pointed out to me that other
libraries such as commons-logging have reloading problems too. Oh well.
Thanks,
Tim
On Dec 1, 2008, at 5:04 PM, Niclas Hedhman wrote:
Tim,
also beware that Sun's JVM caches a lot of the stuff in the resource
management system, and IIRC URLStreamHandlerFactories belong in that
category too, at least if used via the java.net.handler.pkgs system
property. Perhaps the setURLStreamHandlerFactory is better behaved,
but I suggest to check the actual sources to be sure.
Cheers
Niclas
On Tue, Dec 2, 2008 at 1:41 AM, Tim Moore (JIRA) <[EMAIL PROTECTED]>
wrote:
[ https://issues.apache.org/jira/browse/FELIX-827?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12652219
#action_12652219 ]
Tim Moore commented on FELIX-827:
---------------------------------
Karl,
Thanks for your response. I'll test the patch. Unfortunately, the
problem with memory leaks in webapps is rather bad, because class
objects contain a reference to their classloader, and the
classloader then contains references to every class that it loaded.
So if even one class object reference leaks from a webapp
classloader to a parent loader, the entire classloader cannot be
collected. This makes it very important for anything in a webapp
that registers itself with an object in the system classloader to
unregister when the webapp is unloaded. These problems can be very
tricky to track down, and until every single leak is patched, the
problem will remain.
URLHandlers does not restore the previous URLStreamHandlerFactory
after stopping Felix
--------------------------------------------------------------------------------------
Key: FELIX-827
URL: https://issues.apache.org/jira/browse/FELIX-827
Project: Felix
Issue Type: Improvement
Components: Framework
Affects Versions: felix-1.2.1
, felix-1.4.0
Reporter: Tim Moore
Assignee: Karl Pauls
Fix For: felix-1.4.1
Attachments: felix-827.patch, leak.patch, test-felix-
handler-1.0-SNAPSHOT.jar, test-felix-handler.zip
I'm running Felix embedded inside a webapp, running in Tomcat.
Tomcat installs its own URLStreamHandlerFactory. Felix swaps it
out correctly when I start it, and seems to delegate properly.
When the webapp is unloaded, however, and it stops Felix, it does
not restore the previous implementation, but rather leaves the
existing URLHandlers instance installed. Then, if I try to
redeploy the webapp without restarting the JVM, I get errors,
because Tomcat automatically sets the URLHandlers class's static
members to null when it unloads the webapp. (see https://issues.apache.org/bugzilla/show_bug.cgi?id=41939)
I've tested this on 1.2.1 and 1.4.0, and both versions have this
problem.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
--
Tim Moore
Atlassian Plugin Developer