[ 
https://issues.apache.org/struts/browse/STR-3110?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Benedict updated STR-3110:
-------------------------------

    Fix Version/s:     (was: 1.4.0)

> PropertyUtils.clearDescriptors() call in ActionServlet.destroy() method is 
> causing appliction classloader memory leak on Weblogic Portal
> ----------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: STR-3110
>                 URL: https://issues.apache.org/struts/browse/STR-3110
>             Project: Struts 1
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.2.7
>         Environment: Weblogic Portal on windows
>            Reporter: Roopang Chauhan
>            Assignee: Paul Benedict
>             Fix For: 1.3.10
>
>
> PropertyUtils.clearDescriptors() is being called from ActionServlet.destroy() 
> when undeploying an appliction. This call is made after LogFactory.release(). 
> LogFactory.release() removes the application classloader instance from the 
> LogFactory class. However PropertyUtils.clearDescriptors() causes 
> LogFactory.getFactory() to be invoked again:
> getFactory():218, org.apache.commons.logging.LogFactory
> getLog():351, org.apache.commons.logging.LogFactory
> <init>():130, org.apache.commons.beanutils.ConvertUtilsBean
> <init>():110, org.apache.commons.beanutils.BeanUtilsBean
> initialValue():68, org.apache.commons.beanutils.BeanUtilsBean$1
> get():80, org.apache.commons.beanutils.ContextClassLoaderLocal
> getInstance():78, org.apache.commons.beanutils.BeanUtilsBean
> getInstance():101, org.apache.commons.beanutils.PropertyUtilsBean
> clearDescriptors():121, org.apache.commons.beanutils.PropertyUtils
> destroy():308, org.apache.struts.action.ActionServlet
> This puts the application classloader instance back in the factories hashmap 
> in LogFactory after which it is never removed. This causes a leak. 
> I think that the PropertyUtils.clearDescriptors() call should be made before 
> LogFactory.release() and that should fix this problem. I just tried using an 
> earlier version of struts without the PropertyUtils.clearDescriptors() call 
> and that solved the application classloader memory leak.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to