blob: 66121362c90a479537cb23292f45b7feb6c9f3f8 [file] [log] [blame]
Callback Web Services Client Sample
===================================
This sample demonstrates an SCA client that sends service requests to a
remote server and receives asynchronous callbacks from the server, using
Web service bindings for the service and the callback.
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, you need to start the
server first, so open a command prompt and navigate to the
callback-ws-service 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-callback-ws-service.jar myserver.CallbackServer
and on *nix do:
java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-callback-ws-service.jar myserver.CallbackServer
Once the server is running 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-callback-ws-client.jar myapp.MyClientImpl
and on *nix do:
java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-callback-ws-client.jar myapp.MyClientImpl
Sample Overview
---------------
The sample has a single component that has a reference with a service
interface and a callback interface, with Web service bindings for both
these interfaces. The service interface binding URI identifies the
service exposed by the callback-ws-service sample.
callback-ws-client/
src/
main/
java/
myapp/
MyClient.java - interface description for
MyClientComponent
MyClientImpl.java - component implementation
myserver/
MyService.java - interface description for
MyServiceComponent
MyServiceCallback.java - interface description for callback
resources/
myapp.composite - the SCA assembly for this sample
test/
java/
myapp/
CallbackClientTestCase.java - JUnit test case
callback-ws-client.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.
Before you do this, run the callback-ws-service sample to start up the
service that the client will talk to. Take a look at the README in
that sample and you will see you need the following commands:
cd callback-ws-service
ant run
You can then compile and run this sample using the following commands:
cd callback-ws-client
ant compile
ant run
You should see the following output from the run target.
run:
[java] 15-Jan-2008 10:21:38 org.apache.tuscany.sca.node.impl.SCADomainProxy
Impl init
[java] INFO: Domain will be started stand-alone as domain URL is not provid
ed
[java] 15-Jan-2008 10:21:39 org.apache.tuscany.sca.domain.impl.SCADomainImp
l registerNode
[java] INFO: Registered node: http://L3AW203:1336 at endpoint http://L3AW20
3:1336
[java] 15-Jan-2008 10:21:39 org.apache.tuscany.sca.node.impl.SCADomainProxy
Impl createRuntime
[java] INFO: Domain management configured from file:/C:/simon/tuscany/relea
se/sca-r1.1-rc2/tuscany-sca-1.1-incubating-SNAPSHOT/lib/tuscany-sca-all-1.1-incu
bating-SNAPSHOT.jar
[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] 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] Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
[java] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
[java] INFO: Added Servlet mapping: http://L3AW203:1336/SCADomainEventServi
ceProxyComponent
[java] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
[java] INFO: Added Servlet mapping: http://L3AW203:1336/SCADomainAPIService
ProxyComponent
[java] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
[java] INFO: Added Servlet mapping: http://L3AW203:1336/SCANodeManagerCompo
nent/SCANodeManagerService
[java] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
[java] INFO: Added Servlet mapping: http://L3AW203:1336/SCANodeManagerCompo
nent/ComponentManagerService/*
[java] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
[java] INFO: Added Servlet mapping: http://L3AW203:1336/SCANodeManagerCompo
nent/ComponentManagerService
[java] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
[java] INFO: Added Servlet mapping: http://L3AW203:1336/SCADomain/scaDomain
.js
[java] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.node.impl.SCANodeImpl ac
tivateComposite
[java] INFO: Building composite: {http://myapp}myapp
[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] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.node.impl.SCANodeImpl st
artComposite
[java] INFO: Starting composite: {http://myapp}myapp
[java] 15-Jan-2008 10:21:48 org.apache.tuscany.sca.http.jetty.JettyServer a
ddServletMapping
[java] INFO: Added Servlet mapping: http://L3AW203:1336/MyClientComponent/m
yService
[java] aClientMethod on thread Thread[main,5,main]
[java] aClientMethod return from someMethod on thread Thread[main,5,main]
[java] receiveResult on thread Thread[pool-1-thread-2,5,main]
[java] Result: -> someMethod -> receiveResult
[java] Closing the domain
[java] 15-Jan-2008 10:21:54 org.apache.tuscany.sca.node.impl.SCANodeImpl st
opComposite
[java] INFO: Stopping composite: {http://myapp}myapp
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 using Maven you don't need to run the
callback-ws-service sample first as Maven does this for you. With Maven,
both client and server code run in the same JVM, which rather defeats the
purpose of this sample (to show a standalone SCA client), but it's good
enough for a unit test.
cd callback-ws-client
mvn
You should see the following output from the test phase.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running myapp.CallbackClientTestCase
15-Jan-2008 10:17:46 org.apache.tuscany.sca.node.impl.SCADomainProxyImpl init
INFO: Domain will be started stand-alone as domain URL is not provided
15-Jan-2008 10:17:46 org.apache.tuscany.sca.domain.impl.SCADomainImpl registerNo
de
INFO: Registered node: http://L3AW203:1322 at endpoint http://L3AW203:1322
15-Jan-2008 10:17:46 org.apache.tuscany.sca.node.impl.SCADomainProxyImpl createR
untime
INFO: Domain management configured from file:/C:/Documents%20and%20Settings/slaw
s/.m2/repository/org/apache/tuscany/sca/tuscany-node-impl/1.1-incubating-SNAPSHO
T/tuscany-node-impl-1.1-incubating-SNAPSHOT.jar
15-Jan-2008 10:17:52 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.10
15-Jan-2008 10:17:53 org.apache.catalina.startup.ContextConfig defaultWebConfig
INFO: No default web.xml
15-Jan-2008 10:17:53 org.apache.catalina.startup.DigesterFactory register
WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0.xsd
15-Jan-2008 10:17:53 org.apache.catalina.startup.DigesterFactory register
WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_
1.dtd
15-Jan-2008 10:17:53 org.apache.catalina.startup.DigesterFactory register
WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_
2.dtd
15-Jan-2008 10:17:53 org.apache.catalina.startup.DigesterFactory register
WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_2_
0.xsd
15-Jan-2008 10:17:53 org.apache.catalina.startup.DigesterFactory register
WARNING: Could not get url for /javax/servlet/resources/j2ee_web_services_1_1.xs
d
15-Jan-2008 10:17:53 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-1322
15-Jan-2008 10:17:53 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-1322
15-Jan-2008 10:17:53 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1322/SCADomainEventServiceProxyCompo
nent
15-Jan-2008 10:17:53 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1322/SCADomainAPIServiceProxyCompone
nt
15-Jan-2008 10:17:53 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1322/SCANodeManagerComponent/SCANode
ManagerService
15-Jan-2008 10:17:53 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1322/SCANodeManagerComponent/Compone
ntManagerService/*
15-Jan-2008 10:17:53 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1322/SCANodeManagerComponent/Compone
ntManagerService
15-Jan-2008 10:17:53 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1322/SCADomain/scaDomain.js
15-Jan-2008 10:17:53 org.apache.tuscany.sca.node.impl.SCANodeImpl activateCompos
ite
INFO: Building composite: {http://callbackws}callbackws
15-Jan-2008 10:17:54 org.apache.tuscany.sca.node.impl.SCANodeImpl startComposite
INFO: Starting composite: {http://callbackws}callbackws
15-Jan-2008 10:17:54 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.10
15-Jan-2008 10:17:54 org.apache.catalina.startup.ContextConfig defaultWebConfig
INFO: No default web.xml
15-Jan-2008 10:17:54 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8086
15-Jan-2008 10:17:54 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8086
15-Jan-2008 10:17:54 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:8086/MyServiceComponent
15-Jan-2008 10:17:54 org.apache.tuscany.sca.node.impl.SCADomainProxyImpl init
INFO: Domain will be started stand-alone as domain URL is not provided
15-Jan-2008 10:17:54 org.apache.tuscany.sca.domain.impl.SCADomainImpl registerNo
de
INFO: Registered node: http://L3AW203:1323 at endpoint http://L3AW203:1323
15-Jan-2008 10:17:54 org.apache.tuscany.sca.node.impl.SCADomainProxyImpl createR
untime
INFO: Domain management configured from file:/C:/Documents%20and%20Settings/slaw
s/.m2/repository/org/apache/tuscany/sca/tuscany-node-impl/1.1-incubating-SNAPSHO
T/tuscany-node-impl-1.1-incubating-SNAPSHOT.jar
15-Jan-2008 10:17:56 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.10
15-Jan-2008 10:17:56 org.apache.catalina.startup.ContextConfig defaultWebConfig
INFO: No default web.xml
15-Jan-2008 10:17:56 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-1323
15-Jan-2008 10:17:56 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-1323
15-Jan-2008 10:17:56 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1323/SCADomainEventServiceProxyCompo
nent
15-Jan-2008 10:17:56 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1323/SCADomainAPIServiceProxyCompone
nt
15-Jan-2008 10:17:56 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1323/SCANodeManagerComponent/SCANode
ManagerService
15-Jan-2008 10:17:56 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1323/SCANodeManagerComponent/Compone
ntManagerService/*
15-Jan-2008 10:17:56 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1323/SCANodeManagerComponent/Compone
ntManagerService
15-Jan-2008 10:17:56 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1323/SCADomain/scaDomain.js
15-Jan-2008 10:17:56 org.apache.tuscany.sca.node.impl.SCANodeImpl activateCompos
ite
INFO: Building composite: {http://myapp}myapp
15-Jan-2008 10:17:57 org.apache.tuscany.sca.node.impl.SCANodeImpl startComposite
INFO: Starting composite: {http://myapp}myapp
15-Jan-2008 10:17:57 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletM
apping
INFO: Added Servlet mapping: http://L3AW203:1323/MyClientComponent/myService
aClientMethod on thread Thread[main,5,main]
aClientMethod return from someMethod on thread Thread[main,5,main]
setMyServiceCallback on thread Thread[pool-1-thread-1,5,main]
someMethod on thread Thread[pool-1-thread-1,5,main]
Sleeping ...
receiveResult on thread Thread[pool-2-thread-1,5,main]
Result: -> someMethod -> receiveResult
Closing the domain
15-Jan-2008 10:18:02 org.apache.tuscany.sca.node.impl.SCANodeImpl stopComposite
INFO: Stopping composite: {http://myapp}myapp
15-Jan-2008 10:18:03 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-1323
15-Jan-2008 10:18:03 org.apache.tuscany.sca.node.impl.SCANodeImpl stopComposite
INFO: Stopping composite: {http://callbackws}callbackws
15-Jan-2008 10:18:03 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8086
15-Jan-2008 10:18:03 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-1322
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.343 sec
This shows that the Junit test cases have run successfully.