tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Barker" <wbar...@wilshire.com>
Subject Re: Tomcat 6 classloader leak in Commons Pool
Date Fri, 29 Jun 2007 02:46:50 GMT

"Diego Rodríguez Martín" <drodriguez@altiria.com> wrote in message 
news:46840CE6.2000207@altiria.com...
> Hi,
>
>    I have been making some more tests about this issue, using old 
> dbcp/pool factory to get rid of the memory leaks of tomcat embedded 
> libraries commons-pool/commons-dbcp
>
>    When using my own factory for dbcp and commons pool (the old versions), 
> I clear the resources used invoking datasource.close() in my servlet 
> destroy method. With a memory profiler, I have found that the offending 
> class causing the leak is org.apache.tomcat.util.modeler.ManagedBean. It 
> keeps two attributes referencing my dbcp pool, called resource and 
> resourceType.
>
>    Is there a way I can access from my servlet this class 
> (org.apache.tomcat.util.modeler.ManagedBean) in order to clean the 
> references?
>    Is there any other action to be taken to free a resource than calling 
> datasource.close() that I am missing?
>    Is my fault freeing the resource or its Tomcat fault?
>

It is probably Tomcat's fault, since it looks like Tomcat doesn't unregister 
the DataSource elements from JMX when the context is stopped.  You should 
probably open a BZ issue for this (it doesn't look like the fix is too hard, 
NamingContextListener just needs to handle a "stop" event).

To work around it, you just need to unregister the MBean, so something like:
   ObjectName on = new 
ObjectName("Catalina:type=DataSource,path=/myapp,host=localhost,class=my.full.class.name,name=resourceName");
   Registry.getRegistry(null, null).unregister(on);

should work.

>    Thank you very much in advance for your help
>
>       Diego
>
>
> Diego Rodríguez Martín escribió:
>> Hi,
>>
>>    I have found what you said about the factory. It is ported to 6.0. I 
>> have tried to use the old commons-dbcp library, copying 
>> commons-pool-1.2.jar and commons-dbcp-1.2.2.jar in tomcat lib directory 
>> and defining the attribute 
>> factory="org.apache.commons.dbcp.BasicDataSourceFactory" in the resource 
>> in my context.xml.
>>
>>    It works, but I still have a memory leak. Tomcat is retaining my new 
>> commons-dbcp classes, and I think it is related to this classes:
>>
>> org.apache.tomcat.util.modeler.BaseModelMBean,
>> com.sun.jmx.mbeanserver.NamedObject,
>> com.sun.jmx.mbeanserver.RepositorySupport.
>> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor
>> com.sun.jmx.mbeanserver.JmxMBeanServer,
>>
>> This part of Tomcat is completely unkown to me, Do you have any clue?
>>
>> Many thanks for your help
>>
>>
>>    Diego
>> David Smith escribió:
>>> In older versions of tomcat (5.0.x) there is a factory attribute 
>>> defining the pool to use.  It's unclear from the limited look I did 
>>> whether that was carried forward to 5.5 and 6.0.
>>>
>>> --David
>>>
>>> Diego Rodríguez Martín wrote:
>>>> Hi,
>>>>
>>>>    Is there any way to fix this leak downgrading the version of commons 
>>>> pool. I have a production enviroment where we have a lot of 
>>>> deploy/undeploy and with this leak we have to stop/start Tomcat very 
>>>> often. Is there a possibility of replacing tomcat-dbcp.jar with the 
>>>> older individual jars? It will work or you have used new 
>>>> functionalities of these packages?
>>>>
>>>>    Thanks
>>>>
>>>>    Diego
>>>>
>>>>
>>>> Rémy Maucherat escribió:
>>>>> On 6/8/07, Diego Rodríguez Martín <drodriguez@altiria.com> wrote:
>>>>>> It affects version 1.3 of commons pool. In tomcat 6, commons pool
is
>>>>>> embbeded in /tomcat-dbcp.jar/, and the docs don't say with version
of
>>>>>> commons is inside.
>>>>>
>>>>> It's that version. A new commons-pool version will be integrated when
>>>>> it's available.
>>>>>
>>>>> Rémy
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To start a new topic, e-mail: users@tomcat.apache.org
>>>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>>>
>>>>>
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To start a new topic, e-mail: users@tomcat.apache.org
>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>
>>>
>>
>
> -- 
> -------------------------------------------------------------
> Diego Rodríguez Martín (drodriguez@altiria.com)
> ALTIRIA TIC - Servicios SMS - Desarrollo Web
> Tel. +34 913311198 - Fax +34 913310087 - Móvil +34 610299750
> www.altiria.com
> -------------------------------------------------------------
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
> 




---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message