You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Overview of the ServiceMix 2.x RSS Binding Example

The following procedure describes how to run the RSS Binding example in ServiceMix and provides details regarding what the RSS Binding does. For information on the business use case, please refer to: Use Case for HTTP Binding.

The RSS Binding example illustrates:

  • use of declarative programming
  • how to perform an RSS binding in ServiceMix

The source code for the RSS Binding example is located in the ServiceMix installation directory under the examples\rss-binding directory in the servicemix.xml file. It is recommended that you refer to the source code while reading this document.

This example shows how to monitor RSS feed for changes. The main component polls the RSS periodically and when an update is found the RSS item is send to a trace component for logging.

Running the RSS Binding Example

  1. From a command shell, go to the RSS Binding example directory:
    cd [servicemix_install_dir]\examples\rss-binding
    
    where servicemix_install_dir is the directory in which ServiceMix was installed originally.
  2. Then type:
    [servicemix_install_dir]\bin\servicemix servicemix.xml
    

Handy Hint

Add $SERVICEMIX_HOME/bin directory to $PATH variable to simplify execution of the examples.


Stopping the RSS Binding Example

To terminate the HTTP Binding example, type "CTRL-C" in the command shell in which it is running and answer "y" to the "Terminate batch job (y/n)?" question.

How it Works

The diagram below illustrates the flow of messages through the HTTP Binding components:

HTTP Binding Example Message Flow Diagram


Messages flow through the components as follows:

  1. HttpClient, a Java stand-alone program, connects to http://localhost:8912 through the URLConnection class. HttpClient sends the file request.xml to this port.
  2. httpReceiver, an HTTP server, being a listener on http://localhost:8912 receives the message.
  3. httpReceiver sends the message to stockQuote as specified in its destinationService property, via NMR.
  4. stockQuote sends the message into another service, soapEndpoint for processing.
  5. soapEndpoint sends the response to stockQuote.
  6. stockQuote sends the response to httpReceiver via NMR.
  7. httpReceiver sends the response to http://localhost:8912.
  8. HttpClient reads the response.
  9. The response is printed on the console.

Typical output looks like the following:

Output from running [servicemix_install_dir]\bin\servicemix servicemix.xml:

  
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

Output from running Ant:

Buildfile: build.xml

init:

compile:

run:
     [echo] Running example client
     [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

Details

The following table provides more details about the function of each component and bean in the servicemix.xml file:

Component or Bean ID

Description

rss

This component polls RSS feeds for changes and is implemented by RssPollingComponent class. The property urlStrings defines the RSS feeds to be monitored. When one of the RSS feeds being monitored is updated, this component will convert the content of the RSS feed into a normalized message and send it to a trace component via Normalized Message Router (NMR).

StreamWriterComponent

This component accepts a normalized message and display its content to the console.

Useful Code Hints

This section describes the start-up sequence and how the ServiceMix container interacts with the HTTP Binding application. The Java class files are located in the servicemix-2.0.2.jar file in the ServiceMix installation directory. To review the Java source code, unjar and decompile the .class files or download the source code.

Viewing the Java source code is recommended for understanding the information in this section.

  1. The ServiceMix container reads the servicemix.xml file and instantiates the components specified through SpringJBIContainer class.
  2. The container calls the afterPropertiesSet() method of the SpringJBIContainer to register the components and the activationSpecs. In this case, httpReceiver and stockQuote are registered as activationSpecs.
  3. The SpringJBIContainer uses the ActivationSpec class as the container for component specific properties, such as routing information.

Some of the ActivationSpec methods are:

  1. setId - takes the spring:id=jbi and sets the id of the container to "jbi"
  2. setcomponentName - sets componentName to httpReceiver on first invocation and "stockQuote" in the next
  3. setEndpoint - sets the endpoint properties from the servicemix.xml file
  4. setService - sets the service properties from xml file
  5. setDestinationService - sets the destinationService for each component

Related Documentation

For more information on the following topics please see:

For a brief explanation of the XML tags on servicemi.xml, please see:


  • No labels