
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1069273 13f79535-47bb-0310-9956-ffa450edef68
140 lines
6.3 KiB
Text
140 lines
6.3 KiB
Text
Holder Pattern Service Sample
|
|
======================================
|
|
This sample demonstrates an SCA service that uses a web service binding. The
|
|
web service binding has been generated from a given WSDL file:
|
|
src/main/resources/wsdl/orderservice.wsdl
|
|
The generated binding has been placed in src/main/java/org/examle/orderservice
|
|
and was generated via the JDK tool wsimport and the command:
|
|
wsimport -d orderservice -keep orderservice.wsdl
|
|
|
|
The interesting feature of this sample is that the generated service interface,
|
|
OrderService, contains a method with the signature:
|
|
public void reviewOrder(
|
|
@WebParam(name = "myData", targetNamespace = "", mode = WebParam.Mode.INOUT)
|
|
javax.xml.ws.Holder<Order> orderData);
|
|
The orderData parameter is an input/output parameter that is provided by the caller,
|
|
updated by the service, and returned to the caller. The business object is updated
|
|
in place, a common pattern in web services, and not returned as a response. Tuscany
|
|
can handle limited instances of this pattern.
|
|
|
|
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 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-holder-ws-service.jar org.example.orderservice.OrderServiceTestCase
|
|
|
|
and on *nix do
|
|
|
|
java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-holder-ws-service.jar org.example.orderservice.OrderServiceTestCase
|
|
|
|
Sample Overview
|
|
---------------
|
|
The sample provides a single component that is wired to a service with a
|
|
web service binding.
|
|
|
|
holder-ws-service/
|
|
src/
|
|
main/
|
|
java/
|
|
org/
|
|
example/
|
|
orderservice
|
|
*.java - Web service binding generated from
|
|
HelloWorldServiceComponent
|
|
resources/
|
|
wsdl/
|
|
orderservice.wsdl - the service description that describes
|
|
the exposed service
|
|
orderws.composite - the SCA assembly that uses this service
|
|
test/
|
|
java/
|
|
helloworld/
|
|
org/
|
|
example/
|
|
orderservice/
|
|
OrderServiceTestCase.java - JUnit test case
|
|
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 using the
|
|
following commands
|
|
|
|
cd holder-ws-service
|
|
ant compile
|
|
ant run
|
|
|
|
You should see the following output from the run target.
|
|
|
|
run:
|
|
[java] 14-Jan-2008 14:18:47 org.apache.tuscany.sca.http.jetty.JettyServer a
|
|
ddServletMapping
|
|
[java] INFO: Added Servlet mapping: http://L3AW203:8085/HelloWorldService
|
|
[java] HelloWorld server started (press enter to shutdown)
|
|
|
|
As this point the SCA service is exposed as a web service by a web server
|
|
started automatically by the SCA runtime. To stop the server just press
|
|
enter.
|
|
|
|
To exercise the service run up the helloworld-ws-reference sample. Take a look at
|
|
the README in that sample and you will see you need the following commands
|
|
|
|
cd holder-ws-reference
|
|
ant run
|
|
|
|
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-reference sample as Maven includes a simple ping test to make sure that the
|
|
service is available
|
|
|
|
cd holder-ws-service
|
|
mvn
|
|
|
|
You should see the following output from the test phase.
|
|
-------------------------------------------------------
|
|
T E S T S
|
|
-------------------------------------------------------
|
|
Running org.example.orderservice.OrderServiceTestCase
|
|
Jan 21, 2009 9:31:11 AM org.apache.tuscany.sca.node.impl.NodeImpl <init>
|
|
INFO: Creating node: META-INF/sca-deployables/orderws.composite
|
|
Jan 21, 2009 9:31:13 AM org.apache.tuscany.sca.node.impl.NodeImpl configureNode
|
|
INFO: Loading contribution: file:/E:/t/branches/sca-java-1.x/samples/holder-ws-webservice/target/classes/
|
|
Jan 21, 2009 9:31:14 AM org.apache.tuscany.sca.node.impl.NodeImpl configureNode
|
|
INFO: Loading composite: file:/E:/t/branches/sca-java-1.x/samples/holder-ws-webservice/target/classes/META-INF/sca-deployables/orderws.composite
|
|
Jan 21, 2009 9:31:14 AM org.apache.tuscany.sca.node.impl.NodeImpl start
|
|
INFO: Starting node: META-INF/sca-deployables/orderws.composite
|
|
- No JMS connection factories are defined.Will not listen for any JMS messages
|
|
Jan 21, 2009 9:31:15 AM org.apache.catalina.core.StandardEngine start
|
|
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
|
|
Jan 21, 2009 9:31:15 AM org.apache.catalina.startup.ContextConfig defaultWebConfig
|
|
INFO: No default web.xml
|
|
Jan 21, 2009 9:31:15 AM org.apache.coyote.http11.Http11Protocol init
|
|
INFO: Initializing Coyote HTTP/1.1 on http-8085
|
|
Jan 21, 2009 9:31:15 AM org.apache.coyote.http11.Http11Protocol start
|
|
INFO: Starting Coyote HTTP/1.1 on http-8085
|
|
- No JMS connection factories are defined.Will not listen for any JMS messages
|
|
Jan 21, 2009 9:31:15 AM org.apache.tuscany.sca.http.tomcat.TomcatServer addServletMapping
|
|
INFO: Added Servlet mapping: http://T602010:8085/OrderService
|
|
>>> Order submitted=Order[customerId=cust1234,orderId=0,total=50.0,status=Created]
|
|
>>> OrderService.reviewOrder return=Order[customerId=cust1234,orderId=0,total=50.0,status=Approved]
|
|
>>> Order returned=Order[customerId=cust1234,orderId=0,total=50.0,status=Approved]
|
|
Jan 21, 2009 9:31:16 AM org.apache.tuscany.sca.node.impl.NodeImpl stop
|
|
INFO: Stopping node: META-INF/sca-deployables/orderws.composite
|
|
Jan 21, 2009 9:31:17 AM org.apache.tuscany.sca.http.tomcat.TomcatServer removeServletMapping
|
|
INFO: Removed Servlet mapping: http://T602010:8085/OrderService
|
|
Jan 21, 2009 9:31:17 AM org.apache.coyote.http11.Http11Protocol destroy
|
|
INFO: Stopping Coyote HTTP/1.1 on http-8085
|
|
|
|
Note the console output with ">>>" prefix. This shows that an order was submitted in
|
|
the "Created" state, handled by the OrderService reviewOrder method, and returned in
|
|
the "Approved" state. This shows that the Junit test cases have run successfully.
|