blob: 8094bbf0668232ae0cd10f898ff1be2c96e69955 [file] [log] [blame]
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