Chat WebApp Sample
==================
This sample demonstrates the SCA DWR binding to implement the classic Ajax sample
of a chat application which allows multiple users to chat from their browsers.

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-chat-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-chat-webapp

The port and hostname will of course vary depending on your local installation. 

Sample Overview
---------------
The sample provides an SCA component which has an SCA service using the SCA DWR
binding and an SCA reference also using the DWR binding. The component implementation 
simply forwards every invocation of the service as an invocation on the reference. The
component reference is scoped by the composite so every active client of the composite
will receive every message sent to the component service, thus implementing the chat
application with very little code.

chat-webapp/
  src/
    main/
      java/
        sample/
          ChatService.java            - service interface
          ChatServiceImpl.java        - service implementation
      resources/
        chat.composite                - the SCA assembly for this sample
      webapp
        chat.html                     - the html UserInterface for this application
        META-INF/
          sca-contribution.xml        - specifies the composite to be deployed
        WEB-INF/
          web.xml                     - defines the listener that starts up the 
                                        Tuscany SCA runtime
           
  pom.xml                             - the Maven build file  

Building And Running The Sample Using Ant
-----------------------------------------
With the binary distribution the sample can be built using Ant as 
follows

cd chat-webapp
ant package

This should result in a war file (sample-chat-webapp.war) in the target 
directory. Copy this war file to your web app deployment directory in you
web app container. 

The process for getting the web app running will depend on which web app container
you are using. For example, if you are using Tomcat then it is simply a matter
of copying the WAR file to the webapps directory. 

Once the web app is deployed use your browser to visit the following URL;

http://localhost:8080/sample-chat-webapp

The port and hostname will of course vary depending on your local installation. 

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 chat-webapp 
mvn

Again this should result in a war file (sample-chat-webapp.war) in the target 
directory. Follow the steps described in the previous section for running the web 
app and for the expected results.


