WS-Addressing via XML Configuration/Java API
CXF provides support for the 2004-08 and 1.0 versions of WS-Addressing.
To enable WS-Addressing you may enable the WSAddressingFeature on your service. If you wish to use XML to configure this, you may use the following syntax:
You can also use the same exact syntax with a <jaxws:client>
From an API point of view this looks very similar:
You can also use it with the ClientProxyFactoryBeans and ServerFactoryBeans (and their JAX-WS versions, namely JaxWsProxyFactoryBean and JaxWsServerFactoryBean):
Enabling WS-Addressing with WS-Policy
If you're using WS-Policy, CXF can automatically set up WS-Addressing for you if you use the <Addressing> policy expression.
By default, WS-Addressing uses anonymous Reply-To addresses. This means the request/response patterns are synchronous in nature and the response is sent back via the normal reply channel. However, WS-Addressing allows for a decoupled endpoint to be used for receiving the response and CXF will then correlate it with the appropriate request. There are a few ways for configuring the address on which CXF will listen for decoupled WS-Addressing responses.
HTTP Conduit configuration
The HTTP Conduit's client configuration has an option for a DecoupledEndpoint address. If the conduit has this configured, all requests sent via that conduit that have WS-Addressing enabled will have their responses sent to that endpoint:
The address can be set via a Request Context property.
The CXF org.apache.cxf.ws.addressing.impl.AddressingPropertiesImpl object can be used to control many aspects of WS-Addressing including the Reply-To:
This method can also be used to configure the namespace/version of the WS-Addressing headers, exact message ID's, etc...