WS-Addressing Configuration
In order to use WS-Addressing in a message exchange, two things are necessary:
- The addressing interceptors (org.apache.cxf.ws.addressing.MAPAggregator and org.apache.cxf.ws.addressing.soap.MAPCodec) need to be on the nbound and outbound interceptor chains, and
- The use of WS-Addressing is indicated by one of the following:
- A
element is attached to the wsdl:port, wsdl:service or wsdl:binding element.
{http://www.w3.org/2005/02/addressing/wsdl}UsingAddressing
- The (chosen alternative for the) effective policy of the message contains a
Unknown macro: {http}Addressing assertion or a UsingAddressing assertion from either one of the following three namespaces: http://schemas.xmlsoap.org/ws/2004/08/addressing/policy
, http://www.w3.org/2005/02/addressing/wsdl
, http://www.w3.org/2006/05/addressing/wsdl
.
- Property org.apache.cxf.ws.addressing.using in the message context is set to Boolean.TRUE.
- A
Note that for 2.2 to take effect, CXF's policy engine must be enabled, see WS-Policy Framework Configuration.
Adding the Addressing Interceptors using the Addressing Feature
For an individual endpoint:
<beans ... xmlns:wsa="http://cxf.apache.org/ws/addressing" ...> <jaxws:endpoint ...> <jaxws:features> <wsa:addressing/> </jaxws:features> </bean> </beans>
Adding the Addressing Interceptors Manually
org.apache.cxf.ws.addressing.MAPAggregator and org.apache.cxf.ws.addressing.soap.MAPCodec must be added to the interceptor chain for inbound and outbound messages and faults. On a global level, i.e. applicable to all client and server endpoints, this can be done as follows (see also [Bus Configuration]):
<bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
<bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
<cxf:bus>
<cxf:inInterceptors>
<ref bean="mapAggregator"/>
<ref bean="mapCodec"/>
</cxf:inInterceptors>
<cxf:inFaultInterceptors>
<ref bean="mapAggregator"/>
<ref bean="mapCodec"/>
</cxf:inFaultInterceptors>
<cxf:outInterceptors>
<ref bean="mapAggregator"/>
<ref bean="mapCodec"/>
</cxf:outInterceptors>
<cxf:outFaultInterceptors>
<ref bean="mapAggregator"/>
<ref bean="mapCodec"/>
</cxf:outFaultInterceptors>
</cxf:bus>
Configuring the Addressing Interceptors
TBD