Calculator Distributed Sample
=============================
This sample implements a simple calculator using SCA components.  It uses 
exactly the same calculator application classes as the calculator sample but 
runs the application distributed across three nodes.

A node in this sample means an instance of the Tuscany SCA java runtime running
in a Java virtual machine. 

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 four command prompts and 
navigate to this sample directory in each one. There is one command to be run 
in each command prompt:

ant runDomain
ant runNodeB
ant runNodeC
ant runNodeA

Please run the commands in this order. 

OR if you don't have ant, on Windows use

java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.LaunchDomain
java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.LaunchCalculatorNodeB
java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.LaunchCalculatorNodeC
java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.LaunchCalculatorNodeA

and on *nix do

java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.LaunchDomain
java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.LaunchCalculatorNodeB
java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.LaunchCalculatorNodeC
java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.LaunchCalculatorNodeA

The processes started on each of these command prompts can be ended by typing 'q'.


Sample Overview
---------------
The sample provides a single calculator service with a default SCA (java) 
binding. NodeA exercises this interface by calling add, subtract, multiply and 
divide operations. 

In the case of add and subtract the runtime recognises that
it can't find these services locally and, using the remote (web services) 
version of the default SCA binding, contacts the add service running in NodeB 
and the subtract service running in NodeC. 

On the command prompt where you started NodeA, you see the output of invoking the 
calculator functions distributed over NodeB and and NodeC.  On the command prompts 
where you have started NodeB and NodeC, you see log messages that indicate that
the add and subtract services where called on these nodes respectively.

The sample demonstrates that the calculator application can be distributed
across multiple nodes with no change to the application or to the SCA description
files. 

The domain node makes available a web application through which the contributions and 
composites used in this sample can be navigated. One you have run "ant runDomain" you can 
point you browser at:

http://localhost:9990/ui/workspace/

The contents of the sample are as follows:

calculator/
  src/
    main/
      java/
        calculator/
          CalculatorService.java  - the first component, calls +-/* as 
                                    appropriate
          AddService.java         - adds two numbers
          AddServiceImpl.java
          SubtractService.java    - subtracts one number from another
          SubtractServiceImpl.java
          MultiplyService.java    - multiplies two numbers
          MultiplyServiceImpl.java
          DivideService.java      - divides one number by another
          DivideServiceImpl.java
        node/
          LaunchCalculatorNodeA.java - runs an sca node configured with the 
                                    composite describing the main calculator
                                    application. If you look inside this class
                                    you will see that the node is configured
                                    using a URL of the form:
                                    
                                    http://localhost:9990/node-config/NodeA
                                    
                                    This retrieves the information required
                                    to configure NodeA from the domain.

                                    Once the node has been started this launcher
                                    then finds the calculator service and 
                                    calls the various methods.
                                    
          LaunchCalculatorNodeB&C.java -  These launchers start nodes B and C
                                    which runs the add and subtract services.
                                    
                                    Unlike NodeA though these launchers just
                                    wait once the node has been started. They
                                    will service incomming web service requests
                                    as they arrive.  

           LaunchDomain.java      - the node that provides the domain 
                                    configuration to the distributed
                                    nodes
      resources/
        cloud                     - The SCA composite files that describe
                                    the configuration of each node				
        nodeA                     - the SCA assembly for nodeA's part of the 
                                    calculator application
        nodeB                     - the SCA assembly for nodeB's part of the 
                                    calculator application
        nodeC                     - the SCA assembly for nodeC's part of the 
                                    calculator application
    test/
      java/
        calculator/
          CalculatorDistributedTestCase.java - JUnit test case which runs all 
                                    of the separate nodes along with the domain
                                    in a single VM for test purposes
  calculator-distributed.png      - a pictorial representation of the sample 
                                    .composite files
  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 as 
follows

cd calculator-distributed
ant compile
ant runDomain
ant runNodeB
ant runNodeC
ant runNodeA

You should see the following output from the four separate command prompt:

runDomain:
ted>ant runDomain
Buildfile: build.xml

runDomain:
     [java] 26-Mar-2008 12:55:12 org.apache.tuscany.sca.node.launcher.DomainMana
gerLauncher main
     [java] INFO: Apache Tuscany SCA Domain Manager starting...
     [java] 26-Mar-2008 12:55:13 org.apache.tuscany.sca.node.launcher.NodeLaunch
erUtil collectJARFiles
     [java] INFO: Runtime classpath: 147 JARs from C:\simon\tuscany\sca-java-1.2
\distribution\target\apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir\tuscany-sca-
1.2-incubating-SNAPSHOT\lib
     [java] 26-Mar-2008 12:55:13 org.apache.tuscany.sca.node.launcher.NodeLaunch
erUtil collectJARFiles
     [java] INFO: Runtime classpath: 89 JARs from C:\simon\tuscany\sca-java-1.2\
distribution\target\apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir\tuscany-sca-1
.2-incubating-SNAPSHOT\modules
     [java] 26-Mar-2008 12:55:19 org.apache.catalina.core.StandardEngine start
     [java] INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
     [java] 26-Mar-2008 12:55:20 org.apache.catalina.startup.ContextConfig defau
ltWebConfig
     [java] INFO: No default web.xml
     [java] 26-Mar-2008 12:55:20 org.apache.catalina.startup.DigesterFactory reg
ister
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0.
xsd
     [java] 26-Mar-2008 12:55:20 org.apache.catalina.startup.DigesterFactory reg
ister
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_1.
xsd
     [java] 26-Mar-2008 12:55:20 org.apache.catalina.startup.DigesterFactory reg
ister
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt
aglibrary_1_1.dtd
     [java] 26-Mar-2008 12:55:20 org.apache.catalina.startup.DigesterFactory reg
ister
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt
aglibrary_1_2.dtd
     [java] 26-Mar-2008 12:55:20 org.apache.catalina.startup.DigesterFactory reg
ister
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt
aglibrary_2_0.xsd
     [java] 26-Mar-2008 12:55:20 org.apache.catalina.startup.DigesterFactory reg
ister
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jspt
aglibrary_2_1.xsd
     [java] 26-Mar-2008 12:55:20 org.apache.catalina.startup.DigesterFactory reg
ister
     [java] WARNING: Could not get url for /javax/servlet/resources/j2ee_web_ser
vices_1_1.xsd
     [java] 26-Mar-2008 12:55:20 org.apache.coyote.http11.Http11Protocol init
     [java] INFO: Initializing Coyote HTTP/1.1 on http-9990
     [java] 26-Mar-2008 12:55:20 org.apache.coyote.http11.Http11Protocol start
     [java] INFO: Starting Coyote HTTP/1.1 on http-9990
     [java] 26-Mar-2008 12:55:20 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/ui/home/*
     [java] 26-Mar-2008 12:55:20 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/ui/workspace/*
     [java] 26-Mar-2008 12:55:20 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/ui/files/*
     [java] 26-Mar-2008 12:55:20 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/ui/composite/*
     [java] 26-Mar-2008 12:55:20 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/ui/cloud/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/workspace/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/contribution/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/feed/files/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/files/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/composite/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/composite-source/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/deployable/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/composite-resolved/
*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/cloud/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/cloud-source/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/composite-config/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/node-config/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/quickstart/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/processes/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/node/processes/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.http.tomcat.TomcatServer
 addServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:9990/ping/*
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.node.launcher.DomainMana
gerLauncher main
     [java] INFO: SCA Domain Manager started.
     [java] 26-Mar-2008 12:55:21 org.apache.tuscany.sca.node.launcher.DomainMana
gerLauncher main
     [java] INFO: Press enter to shutdown.


runNodeB:
     [java] 26-Mar-2008 12:55:42 org.apache.tuscany.sca.node.launcher.NodeLaunch
er main
     [java] INFO: Apache Tuscany SCA Node starting...
     [java] 26-Mar-2008 12:55:42 org.apache.tuscany.sca.node.launcher.NodeLaunch
er main
     [java] INFO: SCA Node configuration: http://localhost:9990/node-config/NodeB

     [java] 26-Mar-2008 12:55:42 org.apache.tuscany.sca.node.launcher.NodeLaunch
erUtil collectJARFiles
     [java] INFO: Runtime classpath: 147 JARs from C:\simon\tuscany\sca-java-1.2
\distribution\target\apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir\tuscany-sca-
1.2-incubating-SNAPSHOT\lib
     [java] 26-Mar-2008 12:55:42 org.apache.tuscany.sca.node.launcher.NodeLaunch
erUtil collectJARFiles
     [java] INFO: Runtime classpath: 89 JARs from C:\simon\tuscany\sca-java-1.2\
distribution\target\apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir\tuscany-sca-1
.2-incubating-SNAPSHOT\modules
     [java] 26-Mar-2008 12:55:42 org.apache.tuscany.sca.node.impl.NodeImpl <init
>
     [java] INFO: Creating node: http://localhost:9990/node-config/NodeB
     [java] 26-Mar-2008 12:55:45 org.apache.tuscany.sca.node.impl.NodeImpl confi
gureNode
     [java] INFO: Loading contribution: file:/C:/simon/tuscany/sca-java-1.2/dist
ribution/target/apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir/tuscany-sca-1.2-i
ncubating-SNAPSHOT/samples/calculator-distributed/./src/main/resources/nodeB/
     [java] 26-Mar-2008 12:55:46 org.apache.tuscany.sca.node.impl.NodeImpl confi
gureNode
     [java] INFO: Loading composite: http://localhost:9990/composite-resolved/co
mposite:nodeB;http://sample;CalculatorB
     [java] 26-Mar-2008 12:55:47 org.apache.tuscany.sca.node.impl.NodeImpl start

     [java] INFO: Starting node: http://localhost:9990/node-config/NodeB
     [java] Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
     [java] 26-Mar-2008 12:55:53 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:8200/AddServiceComponent
B
     [java] 26-Mar-2008 12:55:53 org.apache.tuscany.sca.node.launcher.NodeLaunch
er main
     [java] INFO: SCA Node started.
     [java] 26-Mar-2008 12:55:53 org.apache.tuscany.sca.node.launcher.NodeLaunch
er main
     [java] INFO: Press enter to shutdown.
     [java] AddService - add 3.0 and 2.0
     
runNodeC:
     [java] 26-Mar-2008 12:56:01 org.apache.tuscany.sca.node.launcher.NodeLaunch
er main
     [java] INFO: Apache Tuscany SCA Node starting...
     [java] 26-Mar-2008 12:56:01 org.apache.tuscany.sca.node.launcher.NodeLaunch
er main
     [java] INFO: SCA Node configuration: http://localhost:9990/node-config/NodeC

     [java] 26-Mar-2008 12:56:01 org.apache.tuscany.sca.node.launcher.NodeLaunch
erUtil collectJARFiles
     [java] INFO: Runtime classpath: 147 JARs from C:\simon\tuscany\sca-java-1.2
\distribution\target\apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir\tuscany-sca-
1.2-incubating-SNAPSHOT\lib
     [java] 26-Mar-2008 12:56:01 org.apache.tuscany.sca.node.launcher.NodeLaunch
erUtil collectJARFiles
     [java] INFO: Runtime classpath: 89 JARs from C:\simon\tuscany\sca-java-1.2\
distribution\target\apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir\tuscany-sca-1
.2-incubating-SNAPSHOT\modules
     [java] 26-Mar-2008 12:56:01 org.apache.tuscany.sca.node.impl.NodeImpl <init
>
     [java] INFO: Creating node: http://localhost:9990/node-config/NodeC
     [java] 26-Mar-2008 12:56:03 org.apache.tuscany.sca.node.impl.NodeImpl confi
gureNode
     [java] INFO: Loading contribution: file:/C:/simon/tuscany/sca-java-1.2/dist
ribution/target/apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir/tuscany-sca-1.2-i
ncubating-SNAPSHOT/samples/calculator-distributed/./src/main/resources/nodeC/
     [java] 26-Mar-2008 12:56:04 org.apache.tuscany.sca.node.impl.NodeImpl confi
gureNode
     [java] INFO: Loading composite: http://localhost:9990/composite-resolved/co
mposite:nodeC;http://sample;CalculatorC
     [java] 26-Mar-2008 12:56:04 org.apache.tuscany.sca.node.impl.NodeImpl start

     [java] INFO: Starting node: http://localhost:9990/node-config/NodeC
     [java] Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
     [java] 26-Mar-2008 12:56:10 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
     [java] INFO: Added Servlet mapping: http://L3AW203:8300/SubtractServiceComp
onentC
     [java] 26-Mar-2008 12:56:10 org.apache.tuscany.sca.node.launcher.NodeLaunch
er main
     [java] INFO: SCA Node started.
     [java] 26-Mar-2008 12:56:10 org.apache.tuscany.sca.node.launcher.NodeLaunch
er main
     [java] INFO: Press enter to shutdown.
     [java] SubtractService - subtract 3.0 and 2.0
     
runNodeA:
     [java] 26-Mar-2008 12:56:10 org.apache.tuscany.sca.node.impl.NodeImpl <init
>
     [java] INFO: Creating node: http://localhost:9990/node-config/NodeA
     [java] 26-Mar-2008 12:56:12 org.apache.tuscany.sca.node.impl.NodeImpl confi
gureNode
     [java] INFO: Loading contribution: file:/C:/simon/tuscany/sca-java-1.2/dist
ribution/target/apache-tuscany-sca-1.2-incubating-SNAPSHOT.dir/tuscany-sca-1.2-i
ncubating-SNAPSHOT/samples/calculator-distributed/./src/main/resources/nodeA/
     [java] 26-Mar-2008 12:56:13 org.apache.tuscany.sca.node.impl.NodeImpl confi
gureNode
     [java] INFO: Loading composite: http://localhost:9990/composite-resolved/co
mposite:nodeA;http://sample;CalculatorA
     [java] 26-Mar-2008 12:56:14 org.apache.tuscany.sca.assembly.builder.impl.Co
mpositeBuilderImpl$1 problem
     [java] WARNING: Component reference target not found, it might be a remote
service: SubtractServiceComponentC
     [java] 26-Mar-2008 12:56:14 org.apache.tuscany.sca.assembly.builder.impl.Co
mpositeBuilderImpl$1 problem
     [java] WARNING: Component reference target not found, it might be a remote
service: AddServiceComponentB
     [java] 26-Mar-2008 12:56:14 org.apache.tuscany.sca.node.impl.NodeImpl start

     [java] INFO: Starting node: http://localhost:9990/node-config/NodeA
     [java] Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
     [java] Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
     [java] CalculatorService - add 3.0 and 2.0
     [java] 3 + 2=5.0
     [java] CalculatorService - subtract 3.0 and 2.0
     [java] 3 - 2=1.0
     [java] CalculatorService - multiply 3.0 and 2.0
     [java] 3 * 2=6.0
     [java] CalculatorService - divide 3.0 and 2.0
     [java] 3 / 2=1.5
     [java] 26-Mar-2008 12:56:20 org.apache.tuscany.sca.node.impl.NodeImpl stop
     [java] INFO: Stopping node: http://localhost:9990/node-config/NodeA

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. When running from Maven the four nodes all run within 
Java virtual machine. 

cd calculator-distributed
mvn

You should see the following output at the end of the test phase.

INFO: Starting node: http://localhost:9990/node-config/NodeA
CalculatorService - add 3.0 and 2.0
AddService - add 3.0 and 2.0
CalculatorService - subtract 3.0 and 2.0
SubtractService - subtract 3.0 and 2.0
CalculatorService - multiply 3.0 and 2.0
CalculatorService - divide 3.0 and 2.0
26-Mar-2008 13:00:52 org.apache.tuscany.sca.node.impl.NodeImpl stop
INFO: Stopping node: http://localhost:9990/node-config/NodeC
26-Mar-2008 13:00:52 org.apache.tuscany.sca.node.impl.NodeImpl stop
INFO: Stopping node: http://localhost:9990/node-config/NodeB
26-Mar-2008 13:00:52 org.apache.tuscany.sca.node.impl.NodeImpl stop
INFO: Stopping node: http://localhost:9990/node-config/NodeA
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 13.328 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

This shows that the Junit test cases have run successfully. 



