Jacques, I am wondering how your commit could have fixed the issue in the demo server: the code you have added create an instance of JreMemoryLeakPreventionListener but doesn't attach it to the server, so it is not used.
Jacopo On Nov 17, 2013, at 10:01 PM, Jacques Le Roux <[email protected]> wrote: > Sorry again, BTW you are invited to try/use/break the demo trunk as most as > possible ;) > > On Sunday, November 17, 2013 9:59 PM Jacques Le Roux > <[email protected]> wrote: >> Sorry, the right initial address for Plumbr is http://plumbr.eu/ >> >> On Sunday, November 17, 2013 9:33 PM Jacques Le Roux >> <[email protected]> wrote: >>> BTW, I have installed Plumbr https://portal.plumbr.eu/ into the trunk demo >>> (don't ask how :D ) >>> It's running for more than a week, any leaks (no surprises) >>> >>> Jacques >>> >>> On Sunday, November 17, 2013 7:53 PM [email protected] >>> <[email protected]> wrote: >>>> Author: jleroux >>>> Date: Sun Nov 17 18:53:17 2013 >>>> New Revision: 1542795 >>>> >>>> URL: http://svn.apache.org/r1542795 >>>> Log: >>>> Adds the JreMemoryLeakPreventionListener, see >>>> https://issues.apache.org/jira/browse/OFBIZ-5395 for details >>>> >>>> Modified: >>>> >>>> ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java >>>> >>>> Modified: >>>> ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java?rev=1542795&r1=1542794&r2=1542795&view=diff >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java >>>> (original) +++ >>>> ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java >>>> Sun Nov 17 18:53:17 2013 @@ -44,6 +44,7 >>>> @@ import org.apache.catalina.Host; >>>> import org.apache.catalina.LifecycleException; >>>> import org.apache.catalina.Manager; >>>> import org.apache.catalina.connector.Connector; >>>> +import org.apache.catalina.core.JreMemoryLeakPreventionListener; >>>> import org.apache.catalina.core.StandardContext; >>>> import org.apache.catalina.core.StandardEngine; >>>> import org.apache.catalina.core.StandardHost; >>>> @@ -140,7 +141,7 @@ import org.xml.sax.SAXException; >>>> */ >>>> >>>> /** >>>> - * CatalinaContainer - Tomcat 5 >>>> + * CatalinaContainer - Tomcat >>>> * >>>> */ >>>> public class CatalinaContainer implements Container { >>>> @@ -206,6 +207,17 @@ public class CatalinaContainer implement >>>> tomcat.enableNaming(); >>>> } >>>> >>>> + // >>>> https://tomcat.apache.org/tomcat-7.0-doc/config/listeners.html#JRE_Memory_Leak_Prevention_Listener_-_org.apache.catalina.core.JreMemoryLeakPreventionListener >>>> + // <<The JRE Memory Leak Prevention Listener provides >>>> work-arounds for known places where the Java Runtime environment >>>> uses + // the context class loader to load a singleton as this will >>>> cause a memory leak if a web application class loader >>>> happens + // to be the context class loader at the time.>> + >>>> // >>>> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/JreMemoryLeakPreventionListener.java?view=annotate >>>> + >>>> JreMemoryLeakPreventionListener jreMemoryLeakPreventionListener = new >>>> JreMemoryLeakPreventionListener(); + // Mostly use >>>> default config, but some specific cases here + >>>> jreMemoryLeakPreventionListener.setAppContextProtection(true); // True is >>>> the default for Java 1.6, use false for Java from 1.7.0_02 onwards (see >>>> sources above) + >>>> jreMemoryLeakPreventionListener.setGcDaemonProtection(false); // False >>>> because of >>>> https://mail-archives.apache.org/mod_mbox/tomcat-users/201008.mbox/%[email protected]%3E >>>> + >>>> jreMemoryLeakPreventionListener.setUrlCacheProtection(false); // False to >>>> keep the URLConnection cache, moot >>>> point + // configure JNDI in the StandardServer StandardServer >>>> server = (StandardServer) tomcat.getServer(); >>>> try { >>>> @@ -480,7 +492,7 @@ public class CatalinaContainer implement >>>> String protocol = ContainerConfig.getPropertyValue(connectorProp, >>>> "protocol", "HTTP/1.1"); >>>> String address = ContainerConfig.getPropertyValue(connectorProp, >>>> "address", "0.0.0.0"); >>>> int port = ContainerConfig.getPropertyValue(connectorProp, "port", >>>> 0) + ClassLoaderContainer.portOffset; >>>> - >>>> + >>>> boolean secure = ContainerConfig.getPropertyValue(connectorProp, >>>> "secure", false); >>>> if (protocol.toLowerCase().startsWith("ajp")) { >>>> protocol = "ajp"; >>>> @@ -540,7 +552,7 @@ public class CatalinaContainer implement >>>> >>>> try { >>>> for (ContainerConfig.Container.Property prop: >>>> connectorProp.properties.values()) { >>>> - if ("port".equals(prop.name)) { >>>> + if ("port".equals(prop.name)) { >>>> connector.setProperty(prop.name, "" + port); >>>> } else { >>>> connector.setProperty(prop.name, prop.value);
