Le 23/09/2014 08:10, Jacopo Cappellato a écrit :
Jacques,

I think that the comment you added to 
https://cwiki.apache.org/confluence/display/OFBTECH/Run+OFBiz+under+outside+Application+Servers
 is enough; it should actually be moved from that page to the 
https://cwiki.apache.org/confluence/display/OFBTECH/Tomcat page (where there is 
already a shorter text).
I will keep it there because it warns also other users (not Tomcat)

I wouldn't add the code sample there because some of the code settings you have 
committed in OFBiz depend on the version of Java (the current ones are ok for 
Java 6 but not for Java 7 that is the current version we are using): but feel 
free to add it if you think it may help users.
Since the code may be useful only with external Tomcat and since the code was 
added to the container that is only executed when you run in embedded mode, I 
will remove that code from the trunk.

I finally agree it should be better removed from code and better explained in 
Tomcat wiki page. I will do that!

Jacques

Regards,

Jacopo

On Sep 22, 2014, at 9:10 PM, Jacques Le Roux <[email protected]> 
wrote:

Actually I put it more as a reminder for users who rely on an external Tomcat 
instance, not the embedded one most users prefer.
I kinda explained that at 
https://issues.apache.org/jira/browse/OFBIZ-5395?focusedCommentId=13824518

Since I investigated this last year, I decided to put what I discovered in code 
even if it's not useful/used OOTB.
Notably the default parameters and explanation about them. It's a kind of 
documentation in code if you want.
Maybe, to make things more clear, I should have commented out all lines.

I put a word in this page 
https://cwiki.apache.org/confluence/display/OFBTECH/Run+OFBiz+under+outside+Application+Servers
Maybe I could do better and extract this block of OOTB code to this page and 
explain things better there.
It seems it was what I wanted to do and did not finish completely. On the other 
hand it's maybe easier for external Tomcat users to have it there, not sure.
I could for instance put a link to the Jira comment above in the code to 
explain things better
and add this

@@ -203,6 +202,7 @@
         }
         try {
             server.setGlobalNamingContext(new InitialContext());
+ //server.addLifecycleListener(jreMemoryLeakPreventionListener); // Useless 
with OOTB Tomcat embedded, but useful when using an external Tomcat instance
         } catch (NamingException e) {
             throw new ContainerException(e);
         }

What do you think?

Jacques

Le 22/09/2014 14:38, Jacopo Cappellato a écrit :
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);




Reply via email to