Web Services Support
Outbound Web Service Gateways
To invoke a Web Service upon sending a message to a channel, there are two options - both of which build
upon the Spring Web Services
project: SimpleWebServiceOutboundGateway and
MarshallingWebServiceOutboundGateway. The former will accept either a
String or javax.xml.transform.Source as the message
payload. The latter provides support for any implementation of the Marshaller
and Unmarshaller interfaces. Both require the URI of the Web Service to be
called. simpleGateway = new SimpleWebServiceOutboundGateway(uri);
marshallingGateway = new MarshallingWebServiceOutboundGateway(uri, marshaller);
For more detail on the inner workings, see the Spring Web Services reference guide's chapter covering
client access
as well as the chapter covering
Object/XML mapping.
Inbound Web Service Gateways
To send a message to a channel upon receiving a Web Service invocation, there are two options again: SimpleWebServiceInboundGateway and
MarshallingWebServiceInboundGateway. The former will extract a javax.xml.transform.Source
from the WebServiceMessage and set it as the message
payload. The latter provides support for implementation of the Marshaller
and Unmarshaller interfaces.
If the incoming web service message is a SOAP message the SOAP Action header will be added to the headers of the
Message that is forwarded onto the request channel.
simpleGateway = new SimpleWebServiceInboundGateway(uri);
simpleGateway.setRequestChannel(forwardOntoThisChannel);
simpleGateway.setReplyChannel(listenForResponseHere); //Optional
marshallingGateway = new MarshallingWebServiceInboundGateway(marshaller);
//set request and optionally reply channel
Both gateways implement the Spring Web Services MessageEndpoint
interface, so they can be configured with a MessageDispatcherServlet
as per standard Spring Web Services configuration.
For more detail on how to use these components, see the Spring Web Services reference guide's chapter covering
creating a Web Service.
The chapter covering
Object/XML mapping is also applicable again.
Web Service Namespace Support
To configure an outbound Web Service Gateway, use the "outbound-gateway" element from the "ws" namespace:
]]>
To set up an inbound Web Service Gateway, use the "inbound-gateway":
]]>
To use Spring OXM Marshallers and/or Unmarshallers, provide bean references. For outbound:
]]>
And for inbound:
]]>
Most Marshaller implementations also implement the
Unmarshaller interface. When using such a
Marshaller, only the "marshaller"
attribute is necessary. Even when using a Marshaller,
you may also provide a reference for the "request-callback" on the outbound gateways.
For either outbound gateway type, the "message-factory" attribute can also be configured with a reference to any
Spring Web Services WebServiceMessageFactory implementation.
For the simple inbound gateway type, the "extract-payload" attribute can be set to false to forward
the entire WebServiceMessage instead of just its payload as a
Message to the request channel. This might be useful, for example,
when a custom Transformer works against the WebServiceMessage directly.