diff --git a/src/docbkx/client.xml b/src/docbkx/client.xml index 0b796901..04e6798d 100644 --- a/src/docbkx/client.xml +++ b/src/docbkx/client.xml @@ -32,7 +32,7 @@ Result. Additionally, it can marshal objects to XML before sending them across a transport, and unmarshal any response XML into an object again. -
+
URIs and Transports The WebServiceTemplate class uses an URI as the message destination. @@ -313,6 +313,34 @@ public void marshalWithSoapActionHeader(MyObject o) { } }); }]]> + + + Note that you can also use the + org.springframework.ws.soap.client.core.SoapActionCallback to set the SOAP + Action header. + + +
+ WS-Addressing + + In addition to the server-side WS-Addressing support, + Spring Web Services also has support for this specification on the client-side. + + + For setting WS-Addressing headers on the client, you can use the + org.springframework.ws.soap.addressing.client.ActionCallback. This callback + takes the desired Action header as a parameter. It also has constructors for specifying the + WS-Addressing version, and a To header. If not specified, the + To header will default to the URL of the connection being made. + + + Here is an example of setting the Action header to + http://samples/RequestOrder: + + +
diff --git a/src/docbkx/server.xml b/src/docbkx/server.xml index be84108f..d5a38345 100644 --- a/src/docbkx/server.xml +++ b/src/docbkx/server.xml @@ -850,7 +850,7 @@ public class AnnotationOrderEndpoint { <para> The mapping above routes requests which have a <literal>SOAPAction</literal> of <uri>http://samples/RequestOrder</uri> to the <literal>'getOrderEndpoint'</literal>. Requests with - <uri>http://samples/CreateOrder</uri> will be routed to the <literal>'createController'</literal>. + <uri>http://samples/CreateOrder</uri> will be routed to the <literal>'createOrderEndpoint'</literal>. </para> <caution> <para> @@ -887,6 +887,138 @@ public class AnnotationOrderEndpoint { method will be invoked. </para> </section> + <section id="server-ws-addressing"> + <title>WS-Addressing + + WS-Addressing specifies a transport-neutral routing mechanism. It is based on a + To and Action SOAP header, which indicate the destination and + intent of the SOAP message, respectively. Additionally, WS-Addressing allows you to define a return + address (for normal messages and for faults), and a unique message identifier which can be used for + correlation + + For more information on WS-Addressing, see . + . + Here is an example of a WS-Addressing message: + + + urn:uuid:21363e0d-2645-4eb7-8afd-2f5ee1bb25cf + + http://example.com/business/client1 + + http://example/com/fabrikam + http://example.com/fabrikam/mail/Delete + + + + 42 + + +]]> + In this example, the destination is set to http://example/com/fabrikam, while the action is + set to http://example.com/fabrikam/mail/Delete. Additionally, there is a message identifier, + and an reply-to address. By default, this address is the "anonymous" address, indicating that a response + should be sent using the same channel as the request (i.e. the HTTP response), but it can also be + another address, as indicated in this example. + + + In Spring Web Services, WS-Addressing is implemented as an endpoint mapping. Using this mapping, you + associate WS-Addressing actions with endpoints, similar to the SoapActionEndpointMapping + described above. + +
+ <classname>SimpleActionEndpointMapping</classname> + + The SimpleActionEndpointMapping is meant to be used in a standard Spring + application context. It maps actions to endpoints via an exposed mappings + property. Here is an example: + + + + getOrderEndpoint + createOrderEndpoint + + + + + + + + + + + +]]> + + + The mapping above routes requests which have a WS-Addressing Action of + http://samples/RequestOrder to the 'getOrderEndpoint'. Requests with + http://samples/CreateOrder will be routed to the 'createOrderEndpoint'. + + + By default, the SimpleActionEndpointMapping supports both the 1.0 + (May 2006), and the August 2004 editions of WS-Addressing. These two versions are most popular, and + are interoperably with Axis 1 and 2, JAX-WS, XFire, Windows Communication Foundation (WCF), and + Windows Services Enhancemenets (WSE) 3.0. If necessary, specific versions of the spec can be + injected into the versions property. + + + Besides the mappings property, the endpoint mapping also has an + address property. If set, value of this property is compared to the + To header property of the incominging message. + + + Finally, there is the messageSenders property, which is required for sending + response messages to non-anonymous, out-of-bound addresses. You can set MessageSender + implementations in this property, the same as you would on the WebServiceTemplate. + See . + +
+
+ <classname>AnnotationActionEndpointMapping</classname> + + The AnnotationActionEndpointMapping is quite similar to the SimpleActionEndpointMapping. + It has the same versions and messageSenders properties, + but uses Java 5 annotations. + + + To use the AnnotationActionEndpointMapping, annotate the handling methods + with the @Action annotation, similar to the + @PayloadRoot and @SoapAction + annotations described in and + . Here is an example: + + + + In addition to the @Action annotation, you can annotate the class + with the @Address annotation. If set, the value is compared to the + To header property of the incominging message. + +
+
Intercepting requests - the <interfacename>EndpointInterceptor</interfacename> interface