Author: darran.lofthouse(a)jboss.com
Date: 2008-09-26 13:27:33 -0400 (Fri, 26 Sep 2008)
New Revision: 8256
Modified:
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/jaxws/handler/MessageContextJAXWS.java
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/soap/MessageContextAssociation.java
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/soap/XMLContent.java
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/wsf/stack/jbws/RequestHandlerImpl.java
Log:
[JBPAPP-1216] Clear ThreadLocals once MessageContextAssociation stack is empty (With
exceptions)
Modified:
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/jaxws/handler/MessageContextJAXWS.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/jaxws/handler/MessageContextJAXWS.java 2008-09-26
17:24:29 UTC (rev 8255)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/jaxws/handler/MessageContextJAXWS.java 2008-09-26
17:27:33 UTC (rev 8256)
@@ -102,7 +102,7 @@
if (outbound == null)
throw new IllegalStateException("Cannot find property: " +
MessageContext.MESSAGE_OUTBOUND_PROPERTY);
- MessageContextAssociation.popMessageContext();
+ MessageContextAssociation.popMessageContext(false);
SOAPMessageContextJAXWS resContext = new SOAPMessageContextJAXWS(reqContext);
resContext.setSOAPMessage(null);
Modified:
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/soap/MessageContextAssociation.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/soap/MessageContextAssociation.java 2008-09-26
17:24:29 UTC (rev 8255)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/soap/MessageContextAssociation.java 2008-09-26
17:27:33 UTC (rev 8256)
@@ -28,6 +28,7 @@
import org.jboss.logging.Logger;
import org.jboss.ws.core.CommonMessageContext;
import org.jboss.ws.core.utils.ThreadLocalAssociation;
+import org.jboss.wsf.common.DOMUtils;
/**
* A thread local association with the current message context
@@ -39,11 +40,11 @@
{
// provide logging
private static Logger log = Logger.getLogger(MessageContextAssociation.class);
-
public static void pushMessageContext(CommonMessageContext msgContext)
{
- if(log.isDebugEnabled()) log.debug("pushMessageContext: " + msgContext +
" (Thread " +Thread.currentThread().getName()+ ")");
+ if (log.isDebugEnabled())
+ log.debug("pushMessageContext: " + msgContext + " (Thread "
+ Thread.currentThread().getName() + ")");
Stack<CommonMessageContext> stack =
ThreadLocalAssociation.localMsgContextAssoc().get();
if (stack == null)
{
@@ -66,13 +67,24 @@
public static CommonMessageContext popMessageContext()
{
+ return popMessageContext(true);
+ }
+
+ public static CommonMessageContext popMessageContext(boolean clearDOMIfEmpty)
+ {
CommonMessageContext msgContext = null;
Stack<CommonMessageContext> stack =
ThreadLocalAssociation.localMsgContextAssoc().get();
if (stack != null && stack.isEmpty() == false)
{
msgContext = stack.pop();
+ if (stack.isEmpty() == true && clearDOMIfEmpty == true)
+ {
+ DOMUtils.clearThreadLocals();
+ }
}
- if(log.isDebugEnabled()) log.debug("popMessageContext: " + msgContext
+" (Thread " +Thread.currentThread().getName()+ ")");
+ if (log.isDebugEnabled())
+ log.debug("popMessageContext: " + msgContext + " (Thread " +
Thread.currentThread().getName() + ")");
return msgContext;
}
+
}
Modified:
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/soap/XMLContent.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/soap/XMLContent.java 2008-09-26
17:24:29 UTC (rev 8255)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/ws/core/soap/XMLContent.java 2008-09-26
17:27:33 UTC (rev 8256)
@@ -73,6 +73,7 @@
// The well formed XML content of this element.
private XMLFragment xmlFragment;
+ private Document document = DOMUtils.getOwnerDocument();
protected XMLContent(SOAPContentElement container)
{
@@ -329,10 +330,29 @@
short childType = child.getNodeType();
if (childType == Node.ELEMENT_NODE)
{
- SOAPElement soapElement = soapFactory.createElement((Element)child);
- container.addChildElement(soapElement);
- if (Constants.NAME_XOP_INCLUDE.equals(qname) || container.isXOPParameter())
- XOPContext.inlineXOPData(soapElement);
+
+ boolean setOwnerDocument = (DOMUtils.peekOwnerDocument() == null);
+
+ try
+ {
+ if (setOwnerDocument)
+ {
+ DOMUtils.setOwnerDocument(document);
+ }
+ SOAPElement soapElement = soapFactory.createElement((Element)child);
+ container.addChildElement(soapElement);
+ if (Constants.NAME_XOP_INCLUDE.equals(qname) ||
container.isXOPParameter())
+ XOPContext.inlineXOPData(soapElement);
+
+ }
+ finally
+ {
+ if (setOwnerDocument)
+ {
+ DOMUtils.clearThreadLocals();
+ }
+ }
+
}
else if (childType == Node.TEXT_NODE)
{
Modified:
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/wsf/stack/jbws/RequestHandlerImpl.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/wsf/stack/jbws/RequestHandlerImpl.java 2008-09-26
17:24:29 UTC (rev 8255)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_JBPAPP-1216/src/main/java/org/jboss/wsf/stack/jbws/RequestHandlerImpl.java 2008-09-26
17:27:33 UTC (rev 8256)
@@ -317,7 +317,6 @@
// clear thread local storage
ThreadLocalAssociation.clear();
- DOMUtils.clearThreadLocals();
}
}
Show replies by date