diff options
Diffstat (limited to 'java/sca/samples/calculator-distributed/README')
-rw-r--r-- | java/sca/samples/calculator-distributed/README | 438 |
1 files changed, 438 insertions, 0 deletions
diff --git a/java/sca/samples/calculator-distributed/README b/java/sca/samples/calculator-distributed/README new file mode 100644 index 0000000000..51f4b07e81 --- /dev/null +++ b/java/sca/samples/calculator-distributed/README @@ -0,0 +1,438 @@ +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 pressing
+the <Enter> key.
+
+
+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.
+
+
+
|