| Feed Aggregator Sample |
| ====================================== |
| This sample demonstrates using the Feed binding to aggregate ATOM and RSS |
| feeds and publish a new aggregated feed. |
| |
| The README in the samples directory (the directory above this) provides |
| general instructions about building and running samples. Take a look there |
| first. |
| |
| If you run the sample using ant, navigate to this sample directory and do: |
| |
| ant run |
| |
| OR if you don't have ant, on Windows do |
| |
| java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-feed-aggregator.jar launch.LaunchFeedServer |
| |
| and on *nix do |
| |
| java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-feed-aggregator.jar launch.LaunchFeedServer |
| |
| You should see the following output on the screen. |
| |
| run: |
| [java] Added Servlet mapping: http://localhost:8083/rssAggregator |
| [java] Added Servlet mapping: http://localhost:8083/atomAggregator/* |
| [java] Sample Feed server started (press enter to shutdown) |
| |
| [java] To read the aggregated feeds, point your Web browser to the following addresses: |
| [java] http://localhost:8083/atomAggregator |
| [java] http://localhost:8083/atomAggregator/atomsvc (for the Atom service document) |
| [java] http://localhost:8083/rssAggregator |
| |
| As this point the aggregated Feeds are exposed by a web server started |
| automatically by the SCA runtime. You can later stop the server by pressing enter. |
| |
| Now that the server is started you can point your Web browser to each URL of the |
| aggregated feeds to see the information in your browser. These URLs are: |
| |
| http://localhost:8083/atomAggregator |
| http://localhost:8083/atomAggregator/atomsvc |
| http://localhost:8083/rssAggregator |
| |
| ** Please note that if your browser is not configured correctly to receive |
| feed information, you will be prompted to open each file that contains the feed |
| information in XML. |
| |
| Sample Overview |
| --------------- |
| The sample provides a single component exposing a Web resource. |
| |
| web-resource/ |
| src/ |
| main/ |
| java/ |
| feed/ |
| AggregatorImpl.java - implementation of the Feed |
| aggregator component |
| Sort.java - utility interface |
| SortImpl.java - implementation of the Sort component |
| launch |
| LaunchFeedServer.java - starts the SCA Runtime and |
| publishes the aggregated feeds |
| resources/ |
| FeedAggregator.composite - the SCA assembly for this sample |
| feed-aggregator.png - a pictorial representation of the |
| sample .composite file |
| build.xml - the Ant build file |
| pom.xml - the Maven build file |
| |
| |
| Details of how this sample works |
| -------------------------------- |
| 1. AggregatorImpl is used to implement the two main components here (RSSAggregator & AtomAggregator). |
| 2. AggregatorImpl directly implements the Tuscany Atom Collection interface. It is a component |
| that provides an Atom feed to respond (see tuscany/modules/binding-atom-abdera) |
| 3. The AggregatorImpl component is not explicitly configured using nested <service> element nor its |
| implementation class is annotated with @Service annotation. Instead, the Tuscany Atom Collection interface |
| defines its services using @Remotable annotation. |
| |
| Building And Running The Sample Using Ant |
| ----------------------------------------- |
| With the binary distribution the sample can be built and run using Ant using the |
| following commands |
| |
| cd feed-aggregator |
| ant compile |
| ant run |
| |
| You should see the following output from the run target. |
| |
| run: |
| [java] Added Servlet mapping: http://localhost:8083/rssAggregator |
| [java] Added Servlet mapping: http://localhost:8083/atomAggregator/* |
| [java] Sample Feed server started (press enter to shutdown) |
| |
| [java] To read the aggregated feeds, point your Web browser to the following addresses: |
| [java] http://localhost:8083/atomAggregator |
| [java] http://localhost:8083/atomAggregator/atomsvc (for the Atom service document) |
| [java] http://localhost:8083/rssAggregator |
| |
| |
| Building The Sample Using Maven |
| ------------------------------------------- |
| With either the binary or source distributions the sample can be built using |
| Maven as follows. |
| |
| cd feed-aggregator |
| mvn |
| |