Feed-aggregator-webapp Sample
=============================
This sample demonstrates using the Feed binding to aggregate ATOM and RSS
feeds and publish a new aggregated feed in a webapp.

The README in the samples directory (the directory above this) provides 
general instructions about building and running samples. Take a look there 
first. 

As this sample provides a web app there is a manual step where the WAR file
that contains the sample is copied to your web app container. If you just want to 
give this sample a go, deploy the WAR file (target/sample-feed-aggregator-webapp.war)
to your web application server. 

To save space, the WAR file isn't included in the binary distribution. You can
build it by following the instructions below in "Building And Running The Sample
Using Ant" or "Building And Running The Sample Using Maven". 
  
Once the web app is deployed use your browser to visit the following URL:

http://localhost:8080/sample-feed-aggregator-webapp

You will then see the following displayed in your Web browser. 

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.


Building And Running The Sample Using Ant 
-------------------------------------------
With the binary distribution the sample can be built using Ant as 
follows

cd feed-aggregator-webapp
ant package

This should result in a war file (sample-feed-aggregator-webapp.war) in the
target directory. Copy this war file to your web app deployment directory and
follow instructions at the begining of this README.


Building And Running The Sample Using Maven 
-------------------------------------------
With either the binary or source distributions the sample can be built and run 
using Maven as follows. 

cd feed-aggregator-webapp 
mvn

This should result in a war file (sample-feed-aggregator-webapp.war) in the
target directory. Follow the steps described in the previous section for
running the web app and for the expected results.


