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. 

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 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.


