Hello World JMS Service Sample
==============================
This sample demonstrates an SCA service that uses a JMS binding 

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 just want to run it to see what happens open a command prompt, 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-helloworld-service-jms.jar helloworld.HelloWorldServer

and on *nix do

java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-service-jms.jar helloworld.HelloWorldServer

Now the server is started you can use the helloworld-reference-jms sample to 
exercise it. 

Sample Overview
---------------
The sample provides a single component that is wired to a service with a 
JMS binding.

helloworld-service-jms/
  src/
    main/
      java/
        helloworld/
          HelloWorldService.java          - interface description for 
                                            HelloWorldServiceComponent
          HelloWorldImpl.java             - component implementation
          HelloWorldServer.java           - starts the SCA Runtime and 
                                            deploys the helloworldjmsservice
                                            .composite and then waits for the
                                            service to be called via JMS
      resources/
        helloworldjmsservice.composite    - the SCA assembly for this sample

    test/
      java/
        helloworld/
          HelloWorldJMSServerTestCase.java- JUnit test case 
  helloworld-service.png                  - a pictorial representation of the 
                                            sample .composite file
  build.xml                               - the Ant build file
  pom.xml                                 - the Maven build file        

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 helloworld-service-jms
ant compile
ant run

You should see the following output from the run target.

run:
     [java] log4j:WARN No appenders could be found for logger (org.apache.axiom.
om.util.StAXUtils).
     [java] log4j:WARN Please initialize the log4j system properly.
     [java] HelloWorld server started (press enter to shutdown)
     
As this point the SCA service is exposed as a JMS service via ActiveMQ which is
started automatically by the SCA runtime. To stop the server just press 
enter.

To exercise the service run up the helloworld-reference-jms sample. Take a look at 
the README in that sample and you will see you need the following commands

cd helloworld-reference-jms
ant run

Building Sample Using Maven 
-------------------------------------------
With either the binary or source distributions the sample can be built 
using Maven as follows. 

cd helloworld-service-jms
mvn

You should see the following output 

...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15 seconds
[INFO] Finished at: Wed Jul 02 12:50:24 BST 2008
[INFO] Final Memory: 13M/51M
[INFO] ------------------------------------------------------------------------


This shows that the module has compiled successfully. 
