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" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


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


--
-------------------------------------------------------------
Diego Rodríguez Martín ([EMAIL PROTECTED])
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






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



--
-------------------------------------------------------------
Diego Rodríguez Martín ([EMAIL PROTECTED])
ALTIRIA TIC - Servicios SMS - Desarrollo Web
Tel. +34 913311198 - Fax +34 913310087 - Móvil +34 610299750
www.altiria.com
-------------------------------------------------------------

Reply via email to