Jason,

Our support for WS-A 2004/08 was added specifically for the CXF WS-RM
implementation, as WS-RM 1.0 depended on that older version of WS-A.

As a result the mechanism for enabling this feature is a tad unfriendly,
requiring an API call on the AddressingProperties to specify the WS-A
version you require.

See for example how the WS-RM code calls this exposeAs() API:

http://svn.apache.org/repos/asf/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java

AddressingPropertiesImpl inMaps = RMContextUtils.retrieveMAPs(message,
false, false);

inMaps.exposeAs(VersionTransformer.Names200408.WSA_NAMESPACE_NAME);

You could write a simple interceptor to run after the WS-A MapAggregator
which takes a similar approach to the above.

Cheers,
Eoghan


2009/11/3 Jason Clark <[email protected]>

> Hello all,
>
> Has anyone here had an opportunity to use the 2004/08 version of
> WS-Addressing  (http://schemas.xmlsoap.org/ws/2004/08/addressing).
>
> The service I'm attempting to connect to will only accept that version.  I
> see on http://cwiki.apache.org/CXF20DOC/ws-addressing.html that "CXF
> provides support for the 2004-08 and 1.0 versions of WS-Addressing.", but
> haven't been able to determine what it is I need to do to change it.
>
> In Axis2 1.4, I'm able to explicitly specify the version by :
>
>
> options.setProperty(org.apache.axis2.addressing.AddressingConstants.WS_ADDRESSING_VERSION,
> org.apache.axis2.addressing.AddressingConstants.Submission.WSA_NAMESPACE);
>
>
> With CXF, I've set up WS-Addressing with:
>
>            ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
>            factory.setServiceClass(OrderServiceSoap.class);
>            factory.setAddress("
> https://webservice.jcorp.com/OrderService.asmx";);
>            factory.getFeatures().add(new WSAddressingFeature() );
>
>  And when I examine the raw request, I see:
>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>    <soap:Header>
>        <Action xmlns="*http://www.w3.org/2005/08/addressing*";>
>            http://service.jcorp.com/OrderServiceSoapPortType/getStudy
>        </Action>
>        <MessageID xmlns="*http://www.w3.org/2005/08/addressing*";>
>            urn:uuid:a559ae80-d667-4795-8d74-3e3c2319d1b3</MessageID>
>        <To xmlns="http://www.w3.org/2005/08/addressing";>
> https://service.jcorp.com/OrderService.asmx
>        </To>
>        <ReplyTo xmlns="http://www.w3.org/2005/08/addressing";>
>            <Address>http://www.w3.org/2005/08/addressing/anonymous
>            </Address>
>        </ReplyTo>
>    </soap:Header>
>    <soap:Body>
>        <ns1:getStudy xmlns:ns1="http://service.jcorp.com/";>
>            <ns2:arg0 xmlns="http://jcorp.com/service";
>                xmlns:ns2="http://service.jcorp.com/";>234</ns2:arg0>
>        </ns1:getStudy>
>    </soap:Body>
> </soap:Envelope>
>
> So it's attempting to do the right thing.  Could someone please point me in
> the right direction?
>

Reply via email to