Tomcat 7 has nice facilities for tracking resource leaks. When shutting down tomcat that runs a Cayenne webapp similar to our tutorial, with CayenneFilter managing Cayenne resources and org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory, I get the following messages:
SEVERE: The web application [/fooweb] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Feb 19, 2011 12:44:08 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/fooweb] appears to have started a thread named [PoolManagerCleanup-728981380] but has failed to stop it. This is very likely to create a memory leak.
Will need to ensure that DI shutdown propagates to XMLPoolingDataSourceFactory and it does the right thing.