Summary: | Static reference from javax.security.auth.Policy.contextClassLoader prevents an undeployed Web application from being garbage collected | ||
---|---|---|---|
Product: | Tomcat 7 | Reporter: | Arjen Knibbe <ArjenCornelis.Knibbe> |
Component: | Catalina | Assignee: | Tomcat Developers Mailing List <dev> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | P2 | ||
Version: | 7.0.0 | ||
Target Milestone: | --- | ||
Hardware: | Sun | ||
OS: | Solaris |
Description
Arjen Knibbe
2010-07-29 10:19:23 UTC
Thanks for the report. I have added protection for this to the JreMemoryLeakPreventionListener and it will be included in 7.0.3 onwards. Reviewing the fix, which is r988296 plus r988429, and whether this should be proposed for 6.0.x, I do not understand the following: There are two Policy classes in JDK 1.6: (1) java.security.Policy (2) javax.security.auth.Policy (@deprecated as of JDK version 1.4 -- Replaced by java.security.Policy) The contextClassLoader field is in (2), but the fix preloads (1) and not (2). So, - how does this fix the issue? - why the issue was observed in the first place? Does Axis 1 make a call to the deprecated class? Yep, bad import. Fixed in trunk and will be in 7.0.4 onwards. I also proposed a back-port of all the changes to this listener that haven't yet made it into tc6. |