diff options
author | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2010-11-09 15:16:26 +0000 |
---|---|---|
committer | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2010-11-09 15:16:26 +0000 |
commit | b0867f563dc8c44e0c7b1df72c9da42041a5ab5b (patch) | |
tree | 78d8c380edf60a42b49951188deafd7008ca482b /sca-java-1.x/trunk/modules | |
parent | 4f47a822cec0e9870f745990fdca0d06b50cc380 (diff) |
TUSCANY-3770: Remove thread message context on completion of each request
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1033012 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-1.x/trunk/modules')
2 files changed, 16 insertions, 6 deletions
diff --git a/sca-java-1.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ThreadMessageContext.java b/sca-java-1.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ThreadMessageContext.java index dd3a4f9ac3..becf5f9295 100644 --- a/sca-java-1.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ThreadMessageContext.java +++ b/sca-java-1.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ThreadMessageContext.java @@ -28,11 +28,12 @@ import org.apache.tuscany.sca.invocation.Message; */ public final class ThreadMessageContext { + // TUSCANY-3770: Used as a marker for detecting when thread context information can be removed + private static final Message msg = new MessageImpl(); + private static final ThreadLocal<Message> CONTEXT = new ThreadLocal<Message>() { @Override protected synchronized Message initialValue() { - Message msg = new MessageImpl(); - msg.setFrom(new EndpointReferenceImpl("/")); return msg; } }; @@ -58,6 +59,12 @@ public final class ThreadMessageContext { public static Message setMessageContext(Message context) { Message old = CONTEXT.get(); CONTEXT.set(context); + + // TUSCANY-3770: Remove thread context information when the request invocation has completed + if (context == msg) { + CONTEXT.remove(); + } + return old; } @@ -70,11 +77,13 @@ public final class ThreadMessageContext { return CONTEXT.get(); } - /** + // TUSCANY-3770: This method is no longer needed, as thread context information is removed implicitly + /* * 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/sca-java-1.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java b/sca-java-1.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java index 27dd89d31b..81ae425de5 100644 --- a/sca-java-1.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java +++ b/sca-java-1.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java @@ -330,8 +330,9 @@ public class WebAppServletHost implements ServletHost { instance = null; servlets.clear(); LogFactory.release(this.getClass().getClassLoader()); - Introspector.flushCaches(); - ThreadMessageContext.removeMessageContext(); + Introspector.flushCaches(); + // TUSCANY-3770: thread message context now removed implicitly + //ThreadMessageContext.removeMessageContext(); } public String getContextPath() { |