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