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.