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] 19-Nov-2007 23:05:34 org.apache.tuscany.sca.http.jetty.JettyServer addServletMapping [java] INFO: Added Servlet mapping: http://EUREKA:8080/MyClientComponent [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 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 19-Nov-2007 18:40:32 org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 19-Nov-2007 18:40:32 org.apache.catalina.startup.ContextConfig defaultWebConfig INFO: No default web.xml 19-Nov-2007 18:40:32 org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8086 19-Nov-2007 18:40:32 org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8086 19-Nov-2007 18:40:32 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletMapping INFO: Added Servlet mapping: http://EUREKA:8086/MyServiceComponent 19-Nov-2007 18:40:33 org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 19-Nov-2007 18:40:33 org.apache.catalina.startup.ContextConfig defaultWebConfig INFO: No default web.xml 19-Nov-2007 18:40:33 org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 19-Nov-2007 18:40:33 org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 19-Nov-2007 18:40:33 org.apache.tuscany.sca.http.tomcat.TomcatServer addServletMapping INFO: Added Servlet mapping: http://EUREKA:8080/MyClientComponent 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 19-Nov-2007 18:40:38 org.apache.coyote.http11.Http11Protocol destroy INFO: Stopping Coyote HTTP/1.1 on http-8080 19-Nov-2007 18:40:38 org.apache.coyote.http11.Http11Protocol destroy INFO: Stopping Coyote HTTP/1.1 on http-8086 Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.796 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 This shows that the Junit test cases have run successfully.