tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Diego Rodríguez Martín <drodrig...@altiria.com>
Subject Re: Tomcat 6 classloader leak in Commons Pool
Date Fri, 29 Jun 2007 08:15:49 GMT
Hi,

    I have tried what you suggested but it doesn't release the context 
properly. The method in Registry is unregisterComponent (unregister 
doesn't exist)

ObjectName on = new 
ObjectName("Catalina:type=DataSource,path=/myapp,host=localhost,class=org.apache.commons.dbcp.BasicDataSource,name=jdbc/MyPool");
(Registry.getRegistry(null, null)).unregisterComponent(on);

    I have tried with other parameters in ObjectName, but it doesn't 
complain even if the parameters are wrong so, how can I know they are right?


    Bill, How do I open a BZ issue?

    Thank you very much for your help

        Diego

Bill Barker escribió:
> "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
>
>
>   

-- 
-------------------------------------------------------------
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
-------------------------------------------------------------


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message