diff options
Diffstat (limited to 'branches')
2 files changed, 11 insertions, 1 deletions
diff --git a/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ThreadMessageContext.java b/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ThreadMessageContext.java index 504bd9b036..dd3a4f9ac3 100644 --- a/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ThreadMessageContext.java +++ b/branches/sca-java-1.x/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ThreadMessageContext.java @@ -69,4 +69,12 @@ public final class ThreadMessageContext { public static Message getMessageContext() { return CONTEXT.get(); } + + /** + * Removes and state from the current thread to ensure that + * any associated classloaders can be GCd + */ + public static void removeMessageContext() { + CONTEXT.remove(); + } } diff --git a/branches/sca-java-1.x/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java b/branches/sca-java-1.x/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java index a33d29df9f..27dd89d31b 100644 --- a/branches/sca-java-1.x/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java +++ b/branches/sca-java-1.x/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java @@ -43,6 +43,7 @@ import javax.servlet.ServletContext; import javax.servlet.ServletException; import org.apache.commons.logging.LogFactory; +import org.apache.tuscany.sca.core.invocation.ThreadMessageContext; import org.apache.tuscany.sca.host.embedded.SCADomain; import org.apache.tuscany.sca.host.http.SecurityContext; import org.apache.tuscany.sca.host.http.ServletHost; @@ -329,7 +330,8 @@ public class WebAppServletHost implements ServletHost { instance = null; servlets.clear(); LogFactory.release(this.getClass().getClassLoader()); - Introspector.flushCaches(); + Introspector.flushCaches(); + ThreadMessageContext.removeMessageContext(); } public String getContextPath() { |