summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.5.1/modules/host-webapp/src/main/java
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-07-18 08:19:12 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-07-18 08:19:12 +0000
commit00bb769d177b68dd8554928e93de970ae1f28d23 (patch)
tree57003e514fd68f54af031bc37a2976a6fc5bedef /branches/sca-java-1.5.1/modules/host-webapp/src/main/java
parentc09a42b3e52dbd4d3aa0c17e7d63fa75e468c2d6 (diff)
TUSCANY-3149 - Generally be more careful about removing object references in host-webapp. Specifically there is a problem with the axis ws binding (JIRA 3732 in the Axis project) where a shutdown hook is registered but not removed. This is fixed in Axis2 1.5 but as we are still in 1.4.1 I've worked round it here.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@795323 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.5.1/modules/host-webapp/src/main/java')
-rw-r--r--branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java1
-rw-r--r--branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppModuleActivator.java6
-rw-r--r--branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java17
3 files changed, 23 insertions, 1 deletions
diff --git a/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java b/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java
index a5a3745d7f..2395ba0c66 100644
--- a/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java
+++ b/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java
@@ -70,6 +70,7 @@ public class TuscanyServletFilter implements Filter {
public void destroy() {
WebAppServletHost.getInstance().destroy();
+ servletHost = null;
}
public void doFilter(ServletRequest request, ServletResponse response, javax.servlet.FilterChain chain)
diff --git a/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppModuleActivator.java b/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppModuleActivator.java
index dbe8a523f9..c10e5e7b5a 100644
--- a/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppModuleActivator.java
+++ b/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppModuleActivator.java
@@ -48,6 +48,12 @@ public class WebAppModuleActivator implements ModuleActivator {
}
public void stop(ExtensionPointRegistry registry) {
+ // as we know we are running in a webapp remove all of the servlet
+ // hosts. There will just be one - see start method
+ ServletHostExtensionPoint servletHosts =
+ registry.getExtensionPoint(ServletHostExtensionPoint.class);
+ List<ServletHost> hosts = servletHosts.getServletHosts();
+ hosts.clear();
}
/**
diff --git a/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java b/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
index 26114ab8b2..045cae4e75 100644
--- a/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
+++ b/branches/sca-java-1.5.1/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
@@ -19,7 +19,9 @@
package org.apache.tuscany.sca.host.webapp;
+import java.beans.Introspector;
import java.io.File;
+import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.MalformedURLException;
@@ -28,6 +30,7 @@ import java.net.URL;
import java.net.UnknownHostException;
import java.util.Collections;
import java.util.HashMap;
+import java.util.IdentityHashMap;
import java.util.Map;
import java.util.logging.Logger;
@@ -39,6 +42,7 @@ import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
+import org.apache.commons.logging.LogFactory;
import org.apache.tuscany.sca.host.embedded.SCADomain;
import org.apache.tuscany.sca.host.http.SecurityContext;
import org.apache.tuscany.sca.host.http.ServletHost;
@@ -57,7 +61,7 @@ public class WebAppServletHost implements ServletHost {
public static final String SCA_DOMAIN_ATTRIBUTE = "org.apache.tuscany.sca.SCADomain";
- private static final WebAppServletHost instance = new WebAppServletHost();
+ private static WebAppServletHost instance = null;
private Map<String, Servlet> servlets;
private SCADomain scaDomain;
@@ -210,6 +214,9 @@ public class WebAppServletHost implements ServletHost {
}
public static WebAppServletHost getInstance() {
+ if (instance == null){
+ instance = new WebAppServletHost();
+ }
return instance;
}
@@ -309,7 +316,15 @@ public class WebAppServletHost implements ServletHost {
if (scaDomain instanceof WebSCADomain) {
((WebSCADomain)scaDomain).destroy();
}
+ servletContext.setAttribute(SCA_DOMAIN_ATTRIBUTE, null);
+ scaDomain = null;
}
+
+ servletContext = null;
+ instance = null;
+ servlets.clear();
+ LogFactory.release(this.getClass().getClassLoader());
+ Introspector.flushCaches();
}
public String getContextPath() {