Author: rmannibucau
Date: Sun Jun 10 23:13:46 2012
New Revision: 1348679

URL: http://svn.apache.org/viewvc?rev=1348679&view=rev
Log:
trying to avoid memory leak for servlet 3.0 objects

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java?rev=1348679&r1=1348678&r2=1348679&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
 Sun Jun 10 23:13:46 2012
@@ -19,6 +19,7 @@ package org.apache.openejb.core;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.naming.Context;
 import javax.naming.InitialContext;
@@ -39,6 +40,7 @@ public class WebContext {
     private Context jndiEnc;
     private final AppContext appContext;
     private Map<String,Object> bindings;
+    private Map<Object, CreationalContext<?>> creatonalContexts = new 
ConcurrentHashMap<Object, CreationalContext<?>>();
     private WebBeansContext webbeansContext;
     private String contextRoot;
 
@@ -125,6 +127,7 @@ public class WebContext {
                 }
             }
 
+            creatonalContexts.put(beanInstance, creationalContext);
             return beanInstance;
     }
 
@@ -193,4 +196,11 @@ public class WebContext {
     public String getContextRoot() {
         return contextRoot;
     }
+
+    public void destroy(final Object o) {
+        final CreationalContext<?> ctx = creatonalContexts.remove(o);
+        if (ctx != null) {
+            ctx.release();
+        }
+    }
 }

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java?rev=1348679&r1=1348678&r2=1348679&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
 Sun Jun 10 23:13:46 2012
@@ -76,6 +76,7 @@ public class JavaeeInstanceManager imple
     public void destroyInstance(Object o) throws IllegalAccessException, 
InvocationTargetException {
         if (o == null) return;
         preDestroy(o, o.getClass());
+        webContext.destroy(o);
     }
 
     /**


Reply via email to