The soap-binding example aims to demonstrate how one can use the Servicemix-http and servicemix-jsr181 components to invoke a pojo object as a web service over HTTP.
Here is a breakdown of what happens when you hit the 'send' button on the client.html page.
- When send button is clicked, a javascript function(send()) is invoked.
- The javascript function submits an Ajax request to the http endpoint deployed using the serviceunit(binding-su.zip) on the Servicemix-http component.The soap request present in the textfield on the left hand side(see circled content in the above image) is sent a parameter to Ajax request.
- The Httpendpoint receives the http+soap request and sends the request to the 'proxied' pojo endpoint(proxied endpoint reference configuration is shown in the xbean.xml excerpt below) deployed using engine-su.zip over the NMR.
Here is the excerpt from the xbean.xml file under
[Serivemix installation directory]\servicemix-3.0-M1\examples\soap-binding\src\components\soap
<http:endpoint service="demo:simple-service"
endpoint="simple-service"
role="consumer"
locationURI="http://localhost:8192/Service/"
defaultMep="http://www.w3.org/2004/08/wsdl/in-out"
soap="true" />
- The servicemix-jsr181 receives the request from the NMR and invokes the 'SimpleService' pojo' 'ping' method.
- The 'SimpleService' returns the response to the 'ping' method and servicemix-jsr181 sends to response back the Httpendpoint over the NMR.
Here is the excerpt of the implemenation for the ping method
public PingResponse ping(PingRequest request)
{ PingResponse response = new PingResponse(); response.setMessage("Ping: " + request.getMessage()); return response; }
This method prefixes a "Ping:" to request recieved and sends it back as the response
- The Servicemix-http sends the response back the browser instance from which the ajax request was sent.
- The browser invokes java script function that sets the response field value to the response received.
There are some subtle points to note here
- The proxied endpoint is configured using the service="demo:simple-service" and endpoint="simple-service" attributes in the http:endpoint configuration in the binding-su's xbeans.xml file. The values demo:simple-service and simple-service point to service name and endpoint name of the pojo endpoint configuration( service="demo:simple-service" endpoint="simple-service" attributes of jsr181:endpoint configuration) in engine-su's xbean.xml file.
- The Servicemix-http and servicemix-jsr181 components are installed at runtime and not using the servicemix.xml file under [servicemix-home]\examples\soap-binding folder.