You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/07/21 16:34:02 UTC

svn commit: r1149193 - in /openejb/trunk/openejb3: assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/ container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apach...

Author: dblevins
Date: Thu Jul 21 14:33:59 2011
New Revision: 1149193

URL: http://svn.apache.org/viewvc?rev=1149193&view=rev
Log:
Fix for at least one of the memory leaks -- make sure to clear out WebContext instances from the ContainerSystem

Modified:
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
    openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java?rev=1149193&r1=1149192&r2=1149193&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java Thu Jul 21 14:33:59 2011
@@ -30,6 +30,7 @@ import org.apache.catalina.startup.Conte
 import org.apache.catalina.startup.HostConfig;
 import org.apache.naming.ContextAccessController;
 import org.apache.naming.ContextBindings;
+import org.apache.openejb.AppContext;
 import org.apache.openejb.Injection;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.assembler.classic.AppInfo;
@@ -297,6 +298,7 @@ public class TomcatWebAppBuilder impleme
             return;
         }
 
+        AppContext appContext = null;
         //Look for context info, maybe context is already scanned
         ContextInfo contextInfo = getContextInfo(standardContext);
         if (contextInfo == null) {
@@ -307,7 +309,7 @@ public class TomcatWebAppBuilder impleme
                     AppInfo appInfo = configurationFactory.configureApplication(appModule);
                     contextInfo.appInfo = appInfo;
 
-                    a.createApplication(contextInfo.appInfo, standardContext.getLoader().getClassLoader());
+                    appContext = a.createApplication(contextInfo.appInfo, standardContext.getLoader().getClassLoader());
                     // todo add watched resources to context
                 } catch (Exception e) {
                     logger.error("Unable to deploy collapsed ear in war " + standardContext.getPath() + ": Exception: " + e.getMessage(), e);
@@ -343,7 +345,8 @@ public class TomcatWebAppBuilder impleme
                 webContext.setId(webAppInfo.moduleId);
                 webContext.setClassLoader(standardContext.getLoader().getClassLoader());
                 webContext.getInjections().addAll(injections);
-                getContainerSystem().addWebDeployment(webContext);
+                appContext.getWebContexts().add(webContext);
+                getContainerSystem().addWebContext(webContext);
             } catch (Exception e) {
                 logger.error("Error merging OpenEJB JNDI entries in to war " + standardContext.getPath() + ": Exception: " + e.getMessage(), e);
             }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java?rev=1149193&r1=1149192&r2=1149193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java Thu Jul 21 14:33:59 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb;
 
+import org.apache.openejb.core.WebContext;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.webbeans.config.WebBeansContext;
 
@@ -48,6 +49,7 @@ public class AppContext extends Deployme
 
     // TODO perhaps to be deleted
     private final List<BeanContext> deployments = new ArrayList<BeanContext>();
+    private final List<WebContext> webcontexts = new ArrayList<WebContext>();
 
     public AppContext(String id, SystemInstance systemInstance, ClassLoader classLoader, Context globalJndiContext, Context appJndiContext, boolean standaloneModule) {
         super(id, systemInstance.getOptions());
@@ -72,6 +74,10 @@ public class AppContext extends Deployme
         this.webBeansContext = webBeansContext;
     }
 
+    public List<WebContext> getWebContexts() {
+        return webcontexts;
+    }
+
     @Override
     public String getId() {
         return super.getId();

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1149193&r1=1149192&r2=1149193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Thu Jul 21 14:33:59 2011
@@ -62,6 +62,7 @@ import org.apache.openejb.core.CoreUserT
 import org.apache.openejb.core.JndiFactory;
 import org.apache.openejb.core.SimpleTransactionSynchronizationRegistry;
 import org.apache.openejb.core.TransactionSynchronizationRegistryWrapper;
+import org.apache.openejb.core.WebContext;
 import org.apache.openejb.core.ivm.naming.IvmContext;
 import org.apache.openejb.core.ivm.naming.IvmJndiFactory;
 import org.apache.openejb.core.timer.EjbTimerServiceImpl;
@@ -963,6 +964,7 @@ public class Assembler extends Assembler
 
         fireBeforeApplicationDestroyed(appInfo);
 
+        final AppContext appContext = containerSystem.getAppContext(appInfo.appId);
 
         EjbResolver globalResolver = new EjbResolver(null, EjbResolver.Scope.GLOBAL);
         for (AppInfo info : deployedApplications.values()) {
@@ -1047,7 +1049,11 @@ public class Assembler extends Assembler
             }
         }
 
-        // Clear out naming for all components first
+        if (appContext != null) for (WebContext webContext : appContext.getWebContexts()) {
+            containerSystem.removeWebContext(webContext);
+        }
+
+    // Clear out naming for all components first
         for (BeanContext deployment : deployments) {
             String deploymentID = deployment.getDeploymentID() + "";
             try {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1149193&r1=1149192&r2=1149193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java Thu Jul 21 14:33:59 2011
@@ -172,6 +172,10 @@ public class RemoteServer {
                         argsList.add("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005");
                     }
 
+                    if (false) {
+                        argsList.add("-agentpath:/Applications/YourKit_Java_Profiler_9.5.6.app/bin/mac/libyjpagent.jnilib=disablestacktelemetry,disableexceptiontelemetry,builtinprobes=none,delay=10000,sessionname=Tomcat");
+                    }
+
                     argsList.add("-javaagent:" + javaagentJar.getAbsolutePath());
                     argsList.add("-Dcom.sun.management.jmxremote");
                     argsList.add("-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager");

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java?rev=1149193&r1=1149192&r2=1149193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java Thu Jul 21 14:33:59 2011
@@ -115,11 +115,11 @@ public class CoreContainerSystem impleme
         return webDeployments.values().toArray(new WebContext[webDeployments.size()]);
     }
 
-    public void addWebDeployment(WebContext webDeployment) {
+    public void addWebContext(WebContext webDeployment) {
         this.webDeployments.put(webDeployment.getId(), webDeployment);
     }
 
-    public void removeWebDeploymentInfo(WebContext info){
+    public void removeWebContext(WebContext info){
         this.webDeployments.remove(info.getId());
     }
 

Modified: openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java?rev=1149193&r1=1149192&r2=1149193&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java (original)
+++ openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java Thu Jul 21 14:33:59 2011
@@ -131,7 +131,7 @@ public class RestDeploymentTest {
         webContext.setClassLoader(webModule.getClassLoader());
         webContext.getInjections().add(new Injection("SimpleEJBLocalBean", "simple", RestWithInjections.class));
         webContext.setJndiEnc(ctx);
-        containerSystem.addWebDeployment(webContext);
+        containerSystem.addWebContext(webContext);
         SystemInstance.get().setComponent(ContainerSystem.class, containerSystem);
 
         ServiceInfo serviceInfo = new ServiceInfo();