commit | 0ba3348fdd6097af0571cc3e0487072876262db9 | [log] [tgz] |
---|---|---|
author | Bernd Bohmann <bommel@apache.org> | Fri Apr 07 12:28:09 2017 +0000 |
committer | Bernd Bohmann <bommel@apache.org> | Fri Apr 07 12:28:09 2017 +0000 |
tree | 576e32b1940a3ba46947ac3d4194ecc62b784bcd | |
parent | 79c740f7b71247877c139dfe401ad8c93c61f627 [diff] |
(TRINIDAD-2465) Memory Leak on redeploy
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java index dc4cb4f..aa27a8e 100644 --- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java +++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/GlobalConfiguratorImpl.java
@@ -87,6 +87,22 @@ * * @return a GlobalConfigurator or <code>null</code> is one was unable to be obtained. */ + + static public final void releaseInstance(){ + final ClassLoader loader = Thread.currentThread().getContextClassLoader(); + + if (loader == null) + { + _LOG.severe("CANNOT_FIND_CONTEXT_CLASS_LOADER"); + return; + } + synchronized (_CONFIGURATORS) + { + GlobalConfiguratorImpl config = _CONFIGURATORS.remove(loader); + _LOG.fine("GlobalConfigurator has been removed."); + + } + } static public final GlobalConfiguratorImpl getInstance() { final ClassLoader loader = Thread.currentThread().getContextClassLoader();
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java index a618f61..58e89c3 100644 --- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java +++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/webapp/TrinidadListenerImpl.java
@@ -39,6 +39,7 @@ { RequestContext.releaseApplicationState(); GlobalConfiguratorImpl.getInstance().destroy(); + GlobalConfiguratorImpl.getInstance().releaseInstance(); } /* (non-Javadoc)