...
The source code for the HTTP Binding example is located in the ServiceMix installation directory under the examples\http-binding
directory in the servicemix.xml
file. It is recommended that you refer to the source code while reading this document.
In short, this example invokes a web service to ask for a stock price. In more detail, this example shows how to use an HTTP binding to handle a simple HTTP post. One component acts as the HTTP server, which listens on http://localhost:8912, while another component invokes a remote service, implemented as an URLEndpoint. A simple HTTP client is provided so that a simple post can be sent to the server.
...
- From a command shell, go to the HTTP Binding example directory:
whereCode Block cd [SM:servicemix_install_dir]\examples\http-binding
servicemix_install_dir
is the directory in which ServiceMix was installed originally. - Then type:
Code Block [SM:servicemix_install_dir]\bin\servicemix servicemix.xml
- To start sending and receiving messages from the HTTP server, send an initial message. To do this, compile and then run a simple HTTP client. The HTTP client used in this example, is built and run from source code using Ant. Execute Ant from the HTTP Binding directory:
servicemix_install_dir\examples\http-binding
. To run the HTTP client type:Code Block ant
Ant will compile and run the simple HTTP client, HttpClient, which performs a simple post on the HTTP Server into the ServiceMix container, before returning the results to the console.
...
- HttpClient, a Java stand-alone program, connects to http://localhost:8912
through the URLConnection class. HttpClient sends the file
request.xml
to this port. - httpReceiver, an HTTP server, being a listener on http://localhost:8912
receives the message.
- httpReceiver sends the message to stockQuote as specified in its destinationService property, via NMR.
- stockQuote sends the message into another service, soapEndpoint, for processing.
- soapEndpoint sends the response to stockQuote.
- stockQuote sends the response to httpReceiver via NMR.
- httpReceiver sends the response to http://localhost:8912
.
- HttpClient reads the response.
- The response is printed on the console.
Typical output looks like the following two screens.
Output from running {{\ Wiki Markup [
SM:servicemix_install_dir
\]\bin\servicemix
servicemix.xml
}}:
Code Block |
---|
Loading ServiceMix from file: C:\exist\servicemix\servicemix-2.0.2\examples\http -binding\servicemix.xml 17:34:34.768 EVENT Starting Jetty/4.2.20RC0 17:34:34.848 EVENT Started ServletHttpContext[/] 17:34:34.858 EVENT Started SocketListener on 127.0.0.1:8912 17:34:34.858 EVENT Started org.mortbay.jetty.Server@1f06dc3 |
...
Code Block |
---|
Buildfile: build.xml init: compile: run: [SM:echo] Running example client [SM:java] <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="htt p://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSch ema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http:/ /schemas.xmlsoap.org/soap/encoding/" soap:encodingStyle="http://schemas.xmlsoap. org/soap/encoding/"><soap:Body><n:getQuoteResponse xmlns:n="urn:xmethods-delayed -quotes"><Result xsi:type="xsd:float">88.8</Result></n:getQuoteResponse></soap:B ody></soap:Envelope>asdf BUILD SUCCESSFUL Total time: 6 seconds |
...
Component or Bean ID | Description |
---|---|
jbi | jbi is the "id" of the JBI container and provides the basic infrastructure services for the following components: httpReceiver and stockQuote. During initialization, several singletons are instantiated: URLEndpoint and JBI. After initialization, the components in the JBI container are activated. |
httpReceiver | This component is an HTTP server that listens at http://localhost/8912![]() . It forwards the message it receives from this URL to stockQuote as specified in its destinationService property in the |
stockQuote | This is a SaajBinding component that invokes an endpoint service called soapEndpoint. It is implemented by the SaajBinding class which converts an inbound JBI message into a SAAJ (Soap With Attachments for Java) request-response and sends the response back to httpReceiver. This provides a message centric way of invoking SOAP services inside providers such as Apache Axis. This component invokes a web service to get a stock price. |
soapEndpoint | A URLEndpoint object contains a URL, which is used to make connections to the remote party. A stand-alone client can pass a URLEndpoint object to the SOAPConnection method call to send a message. |
...