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