WS-Addressing
Skip to end of metadata
Go to start of metadata

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.

Decoupled responses

By default, WS-Addressing using 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:

Request Property

The address can be set via a Request Context property.

AddressingProperties

The CXF org.apache.cxf.ws.addressing.impl.AddressingPropertiesImpl object can be used to control many aspects of WS-Addressing including the Reply-To:

Icon

This method can also be used to configure the namespace/version of the WS-Addressing headers, exact message ID's, etc...

Labels
  • No labels
  1. It was hard for me to figure out how to be able to communicate via WS-Addressing with a counterpart using 2004/08 NS. I got it working with the interceptor code below. I think such a sample would be helpful, feel free to use it. Thanks for CXF!

    AddressingHeaderInterceptor.java