d64d4281ec
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1069273 13f79535-47bb-0310-9956-ffa450edef68
310 lines
14 KiB
Text
310 lines
14 KiB
Text
Domain Webapp Sample
|
|
====================
|
|
|
|
Not actually a webapp just yet as webapp host need to use the new domain for it to work.
|
|
If you run the DomainServer in a debugger you will get a server that provides a registry
|
|
for servide URLs, listens for Nodes starting and stopping and provides a web page where
|
|
you can see what nodes are registered and pull up their web pages.
|
|
|
|
Use the nodes from the calculator-distributed to register with this domain
|
|
|
|
|
|
==========================================
|
|
Below copied from calculator sample as a template for when this gets done
|
|
|
|
|
|
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 runDomainNode
|
|
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.DomainNode
|
|
java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.CalculatorNode mydomain nodeB
|
|
java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.CalculatorNode mydomain nodeC
|
|
java -cp src\main\resources;..\..\lib\tuscany-sca-manifest.jar;target\sample-calculator-distributed.jar node.CalculatorNode mydomain nodeA
|
|
|
|
and on *nix do
|
|
|
|
java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.DomainNode
|
|
java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.CalculatorNode mydomain nodeB
|
|
java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.CalculatorNode mydomain nodeC
|
|
java -cp src/main/resources:../../lib/tuscany-sca-manifest.jar:target/sample-calculator-distributed.jar node.CalculatorNode mydomain nodeA
|
|
|
|
|
|
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 would see output of invoking the
|
|
calculator functions distributed over NodeB and and NodeC. On the command prompts
|
|
where you have started NodeB and NodeC, you would see log messages that indicate that
|
|
the add and substract 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.
|
|
|
|
|
|
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/
|
|
CalculatorNode.java - runs up an sca application based on
|
|
configuration given on the command
|
|
line in the form
|
|
|
|
CalculatorNode <domain name> <node name>
|
|
|
|
it looks for a directory name the same
|
|
as <node name> and loads the composites
|
|
there
|
|
|
|
if <node name> = nodeA it calls the
|
|
+-/* operations otherwise it behaves
|
|
like a server and waits for service
|
|
requests
|
|
DomainNode.java - the node that provides the service
|
|
discovery mechanism to the distributed
|
|
domain
|
|
resources/
|
|
domain - the SCA assembly for the service discovery
|
|
function
|
|
management/ - the SCA assembly for each nodes management
|
|
function
|
|
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 nodeB's part of the
|
|
calculator application
|
|
test/
|
|
java/
|
|
calculator/
|
|
DomainInMemoryTestCase.java - JUnit test case which runs all of the
|
|
separate ndes 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 runDomainNode
|
|
ant runNodeB
|
|
ant runNodeC
|
|
ant runNodeA
|
|
|
|
You should see the following output from the four separate command prompt:
|
|
|
|
runDomainNode:
|
|
[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] 23-Aug-2007 17:40:40 org.apache.tuscany.sca.http.jetty.JettyServer a
|
|
ddServletMapping
|
|
[java] INFO: Added Servlet mapping: http://localhost:8080/ServiceDiscoveryC
|
|
omponent/ServiceDiscovery
|
|
[java] Domain node started (press enter to shutdown)
|
|
[java] Registering service: [mydomain nodeB AddServiceComponent org.apache.
|
|
tuscany.sca.assembly.SCABinding http://localhost:8085/AddServiceComponent]
|
|
[java] Registering service: [mydomain nodeC SubtractServiceComponent org.ap
|
|
ache.tuscany.sca.assembly.SCABinding http://localhost:8086/SubtractServiceCompon
|
|
ent]
|
|
[java] Finding service: [mydomain SubtractServiceComponent org.apache.tusca
|
|
ny.sca.assembly.SCABinding]
|
|
[java] Matching service url: http://localhost:8086/SubtractServiceComponent
|
|
|
|
[java] Finding service: [mydomain AddServiceComponent org.apache.tuscany.sc
|
|
a.assembly.SCABinding]
|
|
[java] Matching service url: http://localhost:8085/AddServiceComponent
|
|
[java] Java Result: 1
|
|
Terminate batch job (Y/N)? y
|
|
|
|
|
|
|
|
runNodeB:
|
|
[java] file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/
|
|
target/classes/management/
|
|
[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] Registering service: [mydomain nodeB AddServiceComponent/ org.apache
|
|
.tuscany.sca.assembly.SCABinding http://localhost:8085/AddServiceComponent]
|
|
[java] 23-Aug-2007 17:41:25 org.apache.tuscany.sca.http.jetty.JettyServer a
|
|
ddServletMapping
|
|
[java] INFO: Added Servlet mapping: http://localhost:8085/AddServiceCompone
|
|
nt
|
|
[java] Node started (press enter to shutdown)
|
|
[java] AddService - add 3.0 and 2.0
|
|
|
|
|
|
runNodeC:
|
|
[java] file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/
|
|
target/classes/management/
|
|
[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] Registering service: [mydomain nodeC SubtractServiceComponent org.ap
|
|
ache.tuscany.sca.assembly.SCABinding http://localhost:8086/SubtractServiceCompon
|
|
ent]
|
|
[java] 23-Aug-2007 17:41:51 org.apache.tuscany.sca.http.jetty.JettyServer a
|
|
ddServletMapping
|
|
[java] Node started (press enter to shutdown)
|
|
[java] INFO: Added Servlet mapping: http://localhost:8086/SubtractServiceCo
|
|
mponent
|
|
[java] SubtractService - subtract 3.0 and 2.0
|
|
Terminate batch job (Y/N)? y
|
|
|
|
|
|
runNodeA:
|
|
[java] file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/
|
|
target/classes/management/
|
|
[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] 23-Aug-2007 17:42:12 org.apache.tuscany.sca.assembly.builder.impl.Co
|
|
mpositeBuilderImpl$1 problem
|
|
[java] WARNING: [WARNING] Component reference target not found, it might be
|
|
a remote service: AddServiceComponent null
|
|
[java]
|
|
[java] 23-Aug-2007 17:42:12 org.apache.tuscany.sca.assembly.builder.impl.Co
|
|
mpositeBuilderImpl$1 problem
|
|
[java] WARNING: [WARNING] Component reference target not found, it might be
|
|
a remote service: SubtractServiceComponent null
|
|
[java]
|
|
[java] Finding service: [mydomain SubtractServiceComponent org.apache.tusca
|
|
ny.sca.assembly.SCABinding]
|
|
[java] Finding service: [mydomain AddServiceComponent org.apache.tuscany.sc
|
|
a.assembly.SCABinding]
|
|
[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
|
|
|
|
|
|
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 from the test phase.
|
|
|
|
-------------------------------------------------------
|
|
T E S T S
|
|
-------------------------------------------------------
|
|
Running calculator.DomainInMemoryTestCase
|
|
Setting up distributed nodes
|
|
file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/target/class
|
|
es/management/
|
|
log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAX
|
|
Utils).
|
|
log4j:WARN Please initialize the log4j system properly.
|
|
23-Aug-2007 18:18:41 org.apache.tuscany.sca.assembly.builder.impl.CompositeBuild
|
|
erImpl$1 problem
|
|
WARNING: [WARNING] Component reference target not found, it might be a remote se
|
|
rvice: AddServiceComponent null
|
|
|
|
23-Aug-2007 18:18:41 org.apache.tuscany.sca.assembly.builder.impl.CompositeBuild
|
|
erImpl$1 problem
|
|
WARNING: [WARNING] Component reference target not found, it might be a remote se
|
|
rvice: SubtractServiceComponent null
|
|
|
|
file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/target/class
|
|
es/management/
|
|
Registering service: [mydomain nodeB AddServiceComponent org.apache.tuscany.sca.
|
|
assembly.SCABinding http://localhost:8085/AddServiceComponent]
|
|
file:/C:/simon/tuscany/java-head/sca/samples/calculator-distributed/target/class
|
|
es/management/
|
|
Registering service: [mydomain nodeC SubtractServiceComponent org.apache.tuscany
|
|
.sca.assembly.SCABinding http://localhost:8086/SubtractServiceComponent]
|
|
Finding service: [mydomain SubtractServiceComponent org.apache.tuscany.sca.assem
|
|
bly.SCABinding]
|
|
Matching service url: http://localhost:8086/SubtractServiceComponent
|
|
Finding service: [mydomain AddServiceComponent org.apache.tuscany.sca.assembly.S
|
|
CABinding]
|
|
Matching service url: http://localhost:8085/AddServiceComponent
|
|
23-Aug-2007 18:18:45 org.apache.tuscany.sca.http.jetty.JettyServer addServletMap
|
|
ping
|
|
INFO: Added Servlet mapping: http://localhost:8085/AddServiceComponent
|
|
23-Aug-2007 18:18:47 org.apache.tuscany.sca.http.jetty.JettyServer addServletMap
|
|
ping
|
|
INFO: Added Servlet mapping: http://localhost:8086/SubtractServiceComponent
|
|
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
|
|
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.14 sec
|
|
|
|
Results :
|
|
|
|
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
|
|
|
|
|
|
This shows that the Junit test cases have run successfully.
|
|
|
|
Known Bug :
|
|
---------
|
|
The processes that are running NodeB and NodeC do not seem to end on pressing the
|
|
<Enter>. This will be fixed for the next release. For this release you should use
|
|
^C (Control C) to exit these processes.
|
|
|
|
|