Spring Web Services Example
Available as of Camel 2.6
This example shows how to expose a SOAP-based web service using Camel and Spring Web Services.
Running the example
The example is included in the distribution at
examples/camel-example-spring-ws. To start the example use Maven:
This will expose a web service on
http://localhost:8080/increment. With help of a tool such as Soap-UI it's easy to sent messages to this endpoint. There's a ready to use SOAP-UI project available at
Code walk through
The Camel route that exposes the above web service is defined as:
Taking a closer look at the URI reveals that this route consumes messages with a certain
rootqname. In this case it listens for messages with root element
incrementRequest defined in the
http://camel.apache.org/example/increment namespace. These XML messages are unmarshalled to Java objects using Camel's Data Format support. After processing the resulting object is marshalled back to XML and returned to the client.
Further notice that the URI contains a reference to an
endpointMapping in the Registry. Since we're using Spring the registry is a Spring ApplicationContext defined in
spring-ws-servlet.xml. This file contains the following bean:
This bean is a Spring-WS endpoint mapping that maps incoming messages to appropriate Camel routes. You'll only need to define one
CamelEndpointMapping regardless of the number of Camel routes that use Spring-WS endpoints.
endpointMapping bean is automatically picked up by the
MessageDispatcherServlet declared in
Since the servlet is named
spring-ws it will look for the file
/WEB-INF/spring-ws-servlet.xml containing the earlier mentioned