[
https://issues.jboss.org/browse/AS7-3733?page=com.atlassian.jira.plugin.s...
]
Philippe Guinot edited comment on AS7-3733 at 2/13/12 9:21 AM:
---------------------------------------------------------------
No it isn't.
If I define a webapp listener, the current context will refer to the application's
class loader and so the fix won't work.
This patch need to be run outside the webapp...
was (Author: guinotphil):
How do I use a listener so ?
And how I can be sure that the context class loader won't be the application's
class loader when running the code of that listener?
If I define a webapp listener, the current context will refer to the application's
class loader and so the fix won't work.
This patch need to be run outside the webapp...
AWT AppContext / EventQueue ClassLoader Memory Leaks
----------------------------------------------------
Key: AS7-3733
URL:
https://issues.jboss.org/browse/AS7-3733
Project: Application Server 7
Issue Type: Bug
Components: Web
Affects Versions: 7.1.0.CR1b
Environment: AS 7 running on JDK 1.6.0_30, Windows 7
Reporter: Philippe Guinot
Assignee: Remy Maucherat
Labels: appcontext, as7, awt, classloader, eventqueue, jboss, leak
The use of libraries using awt components creates ClassLoader Memory Leaks. This is
because the first call to the sun AppContext class makes a static reference to the current
class loader.
Same thing goes with the creation of the AWT Event Queue, as an example the use of the
class java.awt.Color makes a static init call to java.awt.Toolkit which creates an AWT
EventQueue despite the headless mode. The EventQueue also keep a reference to the current
context with the class loader.
The current work around I've found is to add a call to:
{code}java.awt.Toolkit.getDefaultToolkit();{code}
before the application gets loaded.
This causes the EventQueue to be created and the AppContext to be initialized.
Then, as the AWT static references are final, I get rid of this issue for the rest of the
server lifecycle.
I put this code in org.jboss.as.server.Main, just after line 91. However a proper
solution would be to use org.apache.catalina.core.JreMemoryLeakPreventionListener which is
present in the JBoss Web jar but not used... (cf.
https://community.jboss.org/thread/164760 ) However the Tomcat code deals only with the
AppContext, not the EventQueue!
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira