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