[ 
https://issues.apache.org/jira/browse/CXF-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12681342#action_12681342
 ] 

Daniel Kulp commented on CXF-2101:
----------------------------------


A temporary fix was put in to copy the request context when pushed onto the 
background thread.   That SHOULD allow this to work.  

> Cannot add headers to request from Dispatch client in async mode -- 
> ThreadLocal issue
> -------------------------------------------------------------------------------------
>
>                 Key: CXF-2101
>                 URL: https://issues.apache.org/jira/browse/CXF-2101
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 2.1.4
>         Environment: JDK 1.6.0_10
>            Reporter: Andrew Clegg
>
> org.apache.cxf.jaxws.DispatchImpl extends 
> org.apache.cxf.jaxws.BindingProviderImpl, which has a requestContext field:
> protected ThreadLocal <Map<String, Object>> requestContext = 
>     new ThreadLocal<Map<String, Object>>();
> Because the request context is in a ThreadLocal, changes made to it are not 
> visible when you invoke the service via DispatchImpl's invokeAsync method.
> For example:
> dispatch.getRequestContext().put(
>         BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE );
> dispatch.getRequestContext().put(
>         BindingProvider.SOAPACTION_URI_PROPERTY, "uri:myAction" );
> // If you call it this way, no SOAPAction header, verified by Wireshark:
> Response<StreamSource> response = dispatch.invokeAsync( request );
> // But if you call it this way, you get the header
> StreamSource result = dispatch.invoke( request );
> I can package up a test case if anyone thinks it would help fix this. 
> Personally I know very little about CXF's internals, or the JAX-WS specs, but 
> I can do whatever necessary to help.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to