I'm going to dump this in with:
https://issues.apache.org/jira/browse/CXF-1907

Ideally, the Dispatch would be wrappering a ClientImpl and just use the 
context support in there instead of doing it's own version of it (and doing it 
wrongly).    CXF-1907 is on my current "todo" list for early April, but 
subject to change.   

Dan


On Tue March 10 2009 1:31:35 pm Andrew Clegg wrote:
> Branko, thanks for your help, I've got a theory about what might be
> causing this.
>
> CXF gurus -- I've noticed that the request context in
> BindingProviderImpl is stored in a ThreadLocal.
>
> I'm adding something to a DispatchImpl's request context, and then
> calling its invokeAsync method, therefore it's being invoked in a
> different thread.
>
> Correct me if I'm wrong, but doesn't this mean that an asynchronously
> invoked Dispatch will *never* be able to see the same request context
> that it was set up with?
>
> I tried this, extrapolating in reverse from the FAQ:
>
> _dispatch.getRequestContext().put( "thread.local.request.context", "false"
> );
>
> but it made no difference.
>
> Thanks,
>
> Andrew.
>
> 2009/3/10 Andrew Clegg <[email protected]>:
> > I don't get it... How does building the XML payload differently mean
> > you get a SOAPAction header? Or do you mean, when you do it this way,
> > you don't need a SOAPAction header?
> >
> > In my case, I absolutely need a SOAPAction header matching the WSDL,
> > because it's some weird Perl service implementation, and this:
> >
> > _dispatch.getRequestContext().put(
> >        BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE );
> > _dispatch.getRequestContext().put(
> >        BindingProvider.SOAPACTION_URI_PROPERTY, "the action URI" );
> >
> > isn't making *any* difference at all :-(
> >
> > No matter how I try to rephrase it, Wireshark just shows:
> >
> > SOAPAction: ""
> >
> > in the outbound request, and the remote service throws an error. I
> > have debugged into the code to some extent and those put() calls are
> > definitely taking place.
> >
> > Sorry, I know your problem was a little different from mine, but I was
> > really hoping you'd figured out what the right magic words were :-)
> >
> > Andrew.
> >
> > 2009/3/10 xbranko <[email protected]>:
> >> Andrew Clegg-2 wrote:
> >>> I just found this message from last month...
> >>>
> >>> How did you get the SOAPAction header thing to work in the end? I have
> >>
> >> I couldn't get the action to appear either, so finally this is what I
> >> ended up with:
> >>
> >>    try
> >>    {
> >>      String xmlPayload = "<yourXML>...</yourXML>";
> >>
> >>      Service service = Service.create(new URL(wsdl), SERVICE_NAME);
> >>      InputStream is =  new ByteArrayInputStream(xmlPayload.getBytes());
> >>      SOAPMessage message =
> >> MessageFactory.newInstance().createMessage(null, is);
> >>      DOMSource request = new
> >> DOMSource(message.getSOAPBody().extractContentAsDocument());
> >>
> >>      Dispatch<DOMSource> disp = service.createDispatch(PORT_NAME,
> >> DOMSource.class, Service.Mode.PAYLOAD);
> >>      DOMSource result = disp.invoke(request);
> >>      DOMResult domResponse = new DOMResult();
> >>      Transformer trans =
> >> TransformerFactory.newInstance().newTransformer();
> >> trans.transform(result, domResponse);
> >>    }
> >>    catch(Exception e)
> >>    {
> >>        e.printStackTrace();
> >>    }
> >>
> >> Ideally, the CXF team would implement an annotation for parameter (say
> >> @NoEncoding) that would just pass the content as is, i.e. without any
> >> XML character encoding. Hey CXF team -- how about that?
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Sending-XML-payload-without-encoding-it-tp21925398
> >>p22438203.html Sent from the cxf-user mailing list archive at Nabble.com.
> >
> > --
> >
> > :: http://biotext.org.uk/ ::

-- 
Daniel Kulp
[email protected]
http://www.dankulp.com/blog

Reply via email to