Hello World Secure Web Service References Sample ================================================ This sample demonstrates an SCA reference that uses a web service binding. 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 run the server first so open a command prompt, navigate to the helloworld-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-helloworld-ws-service-secure.jar helloworld.HelloWorldServer and on *nix do java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-ws-service-secure.jar helloworld.HelloWorldServer 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-helloworld-ws-reference-secure.jar helloworld.HelloWorldClient and on *nix do java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-helloworld-ws-reference-secure.jar helloworld.HelloWorldClient Sample Overview --------------- The sample provides a single component that is wired to a reference with a web service binding. The binding refers to WSDL that identifies the service exposed by the helloworld-ws-service-secure sample. This sample invokes a secure web-serivce and hence specifies a policy intent named 'authentication' which is fulfilled by a suitable policyset that is defined for the SCA Domain. Over the helloworld-ws-reference sample, this sample demonstrate generally the use of policy intents and policy sets in Tuscany taking the specific instance of a security policy. Note : ------ The policies mentioned and supported are instances of Tuscany specified policies and not instnaces of WS-Policy. helloworld-ws-reference-secure/ src/ main/ java/ helloworld/ HelloWorldService.java - interface description for HelloWorldServiceComponent HelloWorldServiceComponent.java - component implementation HelloWorldClient.java - starts the SCA Runtime and deploys the helloworldwsclient .composite. It then calls the HelloWorldServiceComponent ClientPWCBHandler.java - Callback handler class to provide client password. The handle(Callback[] callbacks) method of this class is where code for accessing user registries and retrieving passwords for given user identifiers can be encapsulated. For example here is where one could access LDAP registries to obtain or compare user identities and passwords. resources/ wsdl helloworld.wsdl - the service description that the SCA reference uses to bind to helloworldwsclient.composite - the SCA assembly for this sample logging.properties - log4j configuration file definitions.xml - the SCA Definitions file that contains intents and policysets defined for the SCA Domain test/ java/ helloworld/ HelloWorldClientTestCase.java - JUnit test case HelloWorldServerTest.java - starts the Web service helloworld-ws-reference-secure.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 start up the service that the reference will talk to. To do this run up the helloworld-ws-service-secure test. Take a look at the README in that sample and you will see you need the following commands cd helloworld-ws-service-secure ant run Once done you can now compile and run this sample using the following commands; cd helloworld-ws-reference-secure ant compile ant run You should see the following output from the run target. run: [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] Injected helloWorldService [java] Called getGreetings [java] *** Calling Client UserId/Password Handler .... [java] Hello World 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 helloworld- ws-service-secure sample first as Maven does this for you. cd helloworld-ws-reference-secure mvn You should see the following output from the test phase. ------------------------------------------------------- T E S T S ------------------------------------------------------- Running helloworld.HelloWorldClientTestCase log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAX Utils). log4j:WARN Please initialize the log4j system properly. log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAX Utils). log4j:WARN Please initialize the log4j system properly. 10-May-2007 13:40:34 org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 10-May-2007 13:40:35 org.apache.catalina.startup.ContextConfig defaultWebConfig INFO: No default web.xml 10-May-2007 13:40:35 org.apache.catalina.startup.DigesterFactory register WARNING: Could not get url for /javax/servlet/resources/j2ee_1_4.xsd 10-May-2007 13:40:35 org.apache.catalina.startup.DigesterFactory register WARNING: Could not get url for /javax/servlet/resources/xml.xsd 10-May-2007 13:40:35 org.apache.catalina.startup.DigesterFactory register WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0.xsd 10-May-2007 13:40:35 org.apache.catalina.startup.DigesterFactory register WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_2_ 0.xsd 10-May-2007 13:40:35 org.apache.catalina.startup.DigesterFactory register WARNING: Could not get url for /javax/servlet/resources/web-app_2_4.xsd 10-May-2007 13:40:35 org.apache.catalina.startup.DigesterFactory register WARNING: Could not get url for /javax/servlet/resources/j2ee_web_services_1_1.xs d 10-May-2007 13:40:35 org.apache.catalina.startup.DigesterFactory register WARNING: Could not get url for /javax/servlet/resources/j2ee_web_services_client _1_1.xsd 10-May-2007 13:40:35 org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8085 10-May-2007 13:40:35 org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8085 Injected helloWorldService Called getGreetings *** Calling Client UserId/Password Handler .... *** Calling Server User/Passwd Handler.... 10-May-2007 13:40:36 org.apache.coyote.http11.Http11Protocol destroy INFO: Stopping Coyote HTTP/1.1 on http-8085 Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.349 sec Results : This shows that the Junit test cases have run successfully. Also note that the client side and server side callback handlers for authentication have been called.