Quote Xquery Sample | |
=================== | |
This sample covers the most important integration scenarios for the xquery | |
implementation type and its corresponding saxon data bindings. | |
If you just want to run it to see what happens open two command prompts (one for the server | |
and the other for the client), navigate to this sample directory and do: | |
Command Prompt 1: | |
ant run-server | |
Command Prompt 2: | |
ant run | |
OR if you don't have ant, on Windows do | |
Command Prompt 1: | |
java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-quote-xquery.jar xquery.quote.XQueryQuoteServer | |
Command Prompt 2: | |
java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-quote-xquery.jar xquery.quote.XQueryQuoteClient | |
and on *nix do | |
Command Prompt 1: | |
java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-quote-xquery.jar xquery.quote.XQueryQuoteServer | |
Command Prompt 2: | |
java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-quote-xquery.jar xquery.quote.XQueryQuoteClient | |
Results | |
---------- | |
The sample when run should simply display on the standard output some startup messages followed by: | |
The service side: | |
Buildfile: build.xml | |
run-server: | |
[java] Sep 18, 2007 1:14:16 PM org.apache.catalina.core.StandardEngine start | |
[java] INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 | |
[java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.ContextConfig defaultWebConfig | |
[java] INFO: No default web.xml | |
[java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register | |
[java] WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0.xsd | |
[java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register | |
[java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd | |
[java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register | |
[java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd | |
[java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register | |
[java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_2_0.xsd | |
[java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register | |
[java] WARNING: Could not get url for /javax/servlet/resources/j2ee_web_services_1_1.xsd | |
[java] Sep 18, 2007 1:14:17 PM org.apache.coyote.http11.Http11Protocol init | |
[java] INFO: Initializing Coyote HTTP/1.1 on http-8085 | |
[java] Sep 18, 2007 1:14:17 PM org.apache.coyote.http11.Http11Protocol start | |
[java] INFO: Starting Coyote HTTP/1.1 on http-8085 | |
[java] Sep 18, 2007 1:14:17 PM org.apache.tuscany.sca.http.tomcat.TomcatServer addServletMapping | |
[java] INFO: Added Servlet mapping: http://localhost:8085/QuoteJoinService | |
[java] Sep 18, 2007 1:14:17 PM org.apache.tuscany.sca.http.tomcat.TomcatServer addServletMapping | |
[java] INFO: Added Servlet mapping: http://localhost:8085/AvailQuoteProviderService | |
[java] XQuery Quote server started (press enter to shutdown) | |
[java] Sep 18, 2007 1:16:54 PM org.apache.coyote.http11.Http11Protocol destroy | |
[java] INFO: Stopping Coyote HTTP/1.1 on http-8085 | |
BUILD SUCCESSFUL | |
Total time: 2 minutes 51 seconds | |
The client side: | |
Buildfile: build.xml | |
run: | |
[java] Input quote for the price list: | |
[java] <?xml version="1.0" encoding="ASCII"?> | |
[java] <priceQuote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pri="http://www.example.org/price" xsi:type="pri:PriceQuote"> | |
[java] <customerName>Acme Inc</customerName> | |
[java] <shipAddress street="12 Springs Rd" city="Morris Plains" state="nj" zip="07960"/> | |
[java] <priceRequests> | |
[java] <priceRequest> | |
[java] <widgetId>12</widgetId> | |
[java] <price>1.0</price> | |
[java] </priceRequest> | |
[java] <priceRequest> | |
[java] <widgetId>134</widgetId> | |
[java] <price>34.1</price> | |
[java] </priceRequest> | |
[java] <priceRequest> | |
[java] <widgetId>211</widgetId> | |
[java] <price>10.0</price> | |
[java] </priceRequest> | |
[java] </priceRequests> | |
[java] </priceQuote> | |
[java] | |
[java] Input quote for the availability: | |
[java] <?xml version="1.0" encoding="ASCII"?> | |
[java] <availQuote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ava="http://www.example.org/avail" xsi:type="ava:AvailQuote"> | |
[java] <availRequest> | |
[java] <widgetId>12</widgetId> | |
[java] <requestedQuantity>10</requestedQuantity> | |
[java] <quantityAvail>true</quantityAvail> | |
[java] <shipDate>2003-03-22</shipDate> | |
[java] </availRequest> | |
[java] <availRequest> | |
[java] <widgetId>134</widgetId> | |
[java] <requestedQuantity>345</requestedQuantity> | |
[java] <quantityAvail>false</quantityAvail> | |
[java] <shipDate>BackOrder</shipDate> | |
[java] </availRequest> | |
[java] <availRequest> | |
[java] <widgetId>211</widgetId> | |
[java] <requestedQuantity>100</requestedQuantity> | |
[java] <quantityAvail>true</quantityAvail> | |
[java] <shipDate>2003-04-21</shipDate> | |
[java] </availRequest> | |
[java] </availQuote> | |
[java] | |
[java] | |
[java] Output quote from local join: | |
[java] <?xml version="1.0" encoding="ASCII"?> | |
[java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote"> | |
[java] <name>Acme Inc</name> | |
[java] <address>12 Springs Rd,Morris Plains,NJ,07960</address> | |
[java] <quoteResponse> | |
[java] <widgetId>12</widgetId> | |
[java] <unitPrice>1.0</unitPrice> | |
[java] <requestedQuantity>10</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-03-22</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>11.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>134</widgetId> | |
[java] <unitPrice>34.1</unitPrice> | |
[java] <requestedQuantity>345</requestedQuantity> | |
[java] <fillOrder>false</fillOrder> | |
[java] <shipDate>BackOrder</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>0.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>211</widgetId> | |
[java] <unitPrice>10.0</unitPrice> | |
[java] <requestedQuantity>100</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-04-21</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>1100.0</totalCost> | |
[java] </quoteResponse> | |
[java] </quote> | |
[java] | |
[java] | |
[java] Output quote from local join (second invokation): | |
[java] <?xml version="1.0" encoding="ASCII"?> | |
[java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote"> | |
[java] <name>Acme Inc</name> | |
[java] <address>12 Springs Rd,Morris Plains,NJ,07960</address> | |
[java] <quoteResponse> | |
[java] <widgetId>12</widgetId> | |
[java] <unitPrice>1.0</unitPrice> | |
[java] <requestedQuantity>10</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-03-22</shipDate> | |
[java] <taxRate>0.2</taxRate> | |
[java] <totalCost>12.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>134</widgetId> | |
[java] <unitPrice>34.1</unitPrice> | |
[java] <requestedQuantity>345</requestedQuantity> | |
[java] <fillOrder>false</fillOrder> | |
[java] <shipDate>BackOrder</shipDate> | |
[java] <taxRate>0.2</taxRate> | |
[java] <totalCost>0.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>211</widgetId> | |
[java] <unitPrice>10.0</unitPrice> | |
[java] <requestedQuantity>100</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-04-21</shipDate> | |
[java] <taxRate>0.2</taxRate> | |
[java] <totalCost>1200.0</totalCost> | |
[java] </quoteResponse> | |
[java] </quote> | |
[java] | |
[java] | |
[java] Output quote from web service join: | |
[java] <?xml version="1.0" encoding="ASCII"?> | |
[java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote"> | |
[java] <name>Acme Inc</name> | |
[java] <address>12 Springs Rd,Morris Plains,NJ,07960</address> | |
[java] <quoteResponse> | |
[java] <widgetId>12</widgetId> | |
[java] <unitPrice>1.0</unitPrice> | |
[java] <requestedQuantity>10</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-03-22</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>11.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>134</widgetId> | |
[java] <unitPrice>34.1</unitPrice> | |
[java] <requestedQuantity>345</requestedQuantity> | |
[java] <fillOrder>false</fillOrder> | |
[java] <shipDate>BackOrder</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>0.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>211</widgetId> | |
[java] <unitPrice>10.0</unitPrice> | |
[java] <requestedQuantity>100</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-04-21</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>1100.0</totalCost> | |
[java] </quoteResponse> | |
[java] </quote> | |
[java] | |
[java] | |
[java] Output quote from properties join: | |
[java] <?xml version="1.0" encoding="ASCII"?> | |
[java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote"> | |
[java] <name>Acme Inc</name> | |
[java] <address>12 Springs Rd,Morris Plains,NJ,07960</address> | |
[java] <quoteResponse> | |
[java] <widgetId>12</widgetId> | |
[java] <unitPrice>1.0</unitPrice> | |
[java] <requestedQuantity>10</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-03-22</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>11.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>134</widgetId> | |
[java] <unitPrice>34.1</unitPrice> | |
[java] <requestedQuantity>345</requestedQuantity> | |
[java] <fillOrder>false</fillOrder> | |
[java] <shipDate>BackOrder</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>0.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>211</widgetId> | |
[java] <unitPrice>10.0</unitPrice> | |
[java] <requestedQuantity>100</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-04-21</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>1100.0</totalCost> | |
[java] </quoteResponse> | |
[java] </quote> | |
[java] | |
[java] | |
[java] Output quote from external references join: | |
[java] <?xml version="1.0" encoding="ASCII"?> | |
[java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote"> | |
[java] <name>Acme Inc</name> | |
[java] <address>12 Springs Rd,Morris Plains,NJ,07960</address> | |
[java] <quoteResponse> | |
[java] <widgetId>12</widgetId> | |
[java] <unitPrice>1.0</unitPrice> | |
[java] <requestedQuantity>10</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-03-22</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>11.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>134</widgetId> | |
[java] <unitPrice>34.1</unitPrice> | |
[java] <requestedQuantity>345</requestedQuantity> | |
[java] <fillOrder>false</fillOrder> | |
[java] <shipDate>BackOrder</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>0.0</totalCost> | |
[java] </quoteResponse> | |
[java] <quoteResponse> | |
[java] <widgetId>211</widgetId> | |
[java] <unitPrice>10.0</unitPrice> | |
[java] <requestedQuantity>100</requestedQuantity> | |
[java] <fillOrder>true</fillOrder> | |
[java] <shipDate>2003-04-21</shipDate> | |
[java] <taxRate>0.1</taxRate> | |
[java] <totalCost>1100.0</totalCost> | |
[java] </quoteResponse> | |
[java] </quote> | |
[java] | |
BUILD SUCCESSFUL | |
Total time: 16 seconds | |
Sample Overview | |
--------------- | |
1. There is a central component for invoking the different | |
scenarios: QuoteJoinLocalComponent | |
2. It provides the following cases: | |
- invoke XQuery component in the current assembly, by providing all needed | |
information as input parameters | |
- invoke XQuery component in external assembly, which is exposed as a web | |
service | |
- invoke XQuery component in the current assembly, which retrieves the needed | |
information from the component properties | |
- invoke XQuery component in the current assembly, which retrieves the needed | |
information from its references to other components: | |
- one of the components is in the current assembly | |
- the other component is in anther assembly and it is exposed (and accessed) | |
as web service | |
3. All of the XQuery components have reference to a component for calculation of the | |
total price | |
4. SDO is used for data interchange | |
src/main/resources | |
wsdl | |
AvailQuote.xsd | |
PriceQuote.xsd | |
Quote.xsd | |
quotejoin.wsdl | |
META-INF | |
sca | |
quote_join_external_references.xq --- the external references xquery script | |
quote_join_properties.xq --- the property-based join xquery script | |
quote_join.xq --- the join xquery script | |
xqueryquotews.composite --- composite file for the client side | |
xqueryquotewsclient.composite --- composite file for the service side | |
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 Maven | |
as follows: | |
cd quote-xquery | |
ant compile | |
ant run-server | |
(then from another command prompt) | |
cd quote-xquery | |
ant run | |
Building And Running The Sample Using Maven | |
------------------------------------------- | |
With either the binary or source distribution the sample can be built and run | |
using Maven as follows: | |
cd quote-xquery | |
mvn | |
This shows that the Junit test cases have run successfully. |