We will use this sample to demonstrate the data service features of WSO2 Web Services Application Server.
Data service allows you to expose your data in relational databases in to XML as a web service. WSAS uses a data service configuration file to define the SQL and how to map the result in to xml elements. Data configuration is stored as an XML file with the extension .dbs in the WSO2WSAS_HOME/repository/dataservices directory.
In this sample we will expose the data in an Apache Derby embedded database for the examples.
To build the samples you need the Apache Ant build tool.
wsasuser@wsasuser:~/apps/wso2wsas/samples/DataService$ ant deploy Buildfile: build.xml init: [mkdir] Created dir: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/database [mkdir] Created dir: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/classes create-database: [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/CreateTables.sql [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/Customers.sql [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/Employees.sql [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/Offices.sql [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/OrderDetails.sql [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/Orders.sql [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/Payments.sql [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/ProductLines.sql [sql] Executing file: /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/sql/Products.sql [sql] Executing commands [sql] 3881 of 3881 SQL statements executed successfully deploy: [copy] Copying 1 file to /home/wsasuser/apps/wso2wsas-2.0/repository/dataservices [copy] Copying 1 file to /home/wsasuser/apps/wso2wsas-2.0/repository/dataservices BUILD SUCCESSFUL Total time: 16 seconds
wsasuser@wsasuser:~/apps/wso2wsas/samples/DataService$ ant run-client-1 Buildfile: build.xml init: compile-all: run-client-1: [java] Requesting contact details of customers in Boston... [java] <?xml version="1.0" encoding="UTF-8"?> [java] <data:customers xmlns:data="http://ws.wso2.org/dataservice"> [java] <customer> [java] <customer-name>Gifts4AllAges.com</customer-name> [java] <contact-last-name>Yoshido</contact-last-name> [java] <contact-first-name>Juri</contact-first-name> [java] <phone>6175559555</phone> [java] <city>Boston</city> [java] <country>USA</country> [java] </customer> [java] <customer> [java] <customer-name>Diecast Collectables</customer-name> [java] <contact-last-name>Franco</contact-last-name> [java] <contact-first-name>Valarie</contact-first-name> [java] <phone>6175552555</phone> [java] <city>Boston</city> [java] <country>USA</country> [java] </customer> [java] </data:customers> [java] Requesting employee contact details for employee number 1002... [java] <?xml version="1.0" encoding="UTF-8"?> [java] <data:employees xmlns:data="http://ws.wso2.org/dataservice"> [java] <employee> [java] <last-name>Murphy</last-name> [java] <first-name>Diane</first-name> [java] <email>dmurphy@classicmodelcars.com</email> [java] </employee> [java] </data:employees> [java] Requestinng customer address for Jean King... [java] <?xml version="1.0" encoding="UTF-8"?> [java] <data:customer-addresses xmlns:data="http://ws.wso2.org/dataservice"> [java] <customer-address> [java] <customernumber>112</customernumber> [java] <contactlastname>King</contactlastname> [java] <contactfirstname>Jean</contactfirstname> [java] <addressline1>8489 Strong St.</addressline1> [java] <addressline2/> [java] <city>Las Vegas</city> [java] <state>NV</state> [java] <postalcode>83030</postalcode> [java] <country>USA</country> [java] </customer-address> [java] </data:customer-addresses> BUILD SUCCESSFUL Total time: 3 seconds
wsasuser@wsasuser:~/apps/wso2wsas/samples/DataService$ ant run-client-2 Buildfile: build.xml init: compile-all: [javac] Compiling 2 source files to /home/wsasuser/apps/wso2wsas-2.0-beta/samples/DataService/classes run-client-2: [java] Requesting top customers in California... [java] <?xml version="1.0" encoding="UTF-8"?> [java] <data:top-customers xmlns:data="http://ws.wso2.org/dataservice"> [java] <customer-info> [java] <customer-number>124</customer-number> [java] <last-name>Nelson</last-name> [java] <first-name>Susan</first-name> [java] <telephone>4155551450</telephone> [java] </customer-info> [java] <customer-info> [java] <customer-number>129</customer-number> [java] <last-name>Murphy</last-name> [java] <first-name>Julie</first-name> [java] <telephone>6505555787</telephone> [java] </customer-info> [java] <customer-info> [java] <customer-number>161</customer-number> [java] <last-name>Hashimoto</last-name> [java] <first-name>Juri</first-name> [java] <telephone>6505556809</telephone> [java] </customer-info> [java] <customer-info> [java] <customer-number>205</customer-number> [java] <last-name>Young</last-name> [java] <first-name>Julie</first-name> [java] <telephone>6265557265</telephone> [java] </customer-info> [java] <customer-info> [java] <customer-number>239</customer-number> [java] <last-name>Thompson</last-name> [java] <first-name>Valarie</first-name> [java] <telephone>7605558146</telephone> [java] </customer-info> [java] <customer-info> [java] <customer-number>321</customer-number> [java] <last-name>Brown</last-name> [java] <first-name>Julie</first-name> [java] <telephone>6505551386</telephone> [java] </customer-info> [java] <customer-info> [java] <customer-number>450</customer-number> [java] <last-name>Frick</last-name> [java] <first-name>Sue</first-name> [java] <telephone>4085553659</telephone> [java] </customer-info> [java] </data:top-customers> [java] Requesting top employees in MA... [java] <?xml version="1.0" encoding="UTF-8"?> [java] <data:top-employees xmlns:data="http://ws.wso2.org/dataservice"> [java] <employee> [java] <emp-no>1188</emp-no> [java] <last-name>Firrelli</last-name> [java] <first-name>Julie</first-name> [java] <job-title>Sales Rep</job-title> [java] </employee> [java] <employee> [java] <emp-no>1216</emp-no> [java] <last-name>Patterson</last-name> [java] <first-name>Steve</first-name> [java] <job-title>Sales Rep</job-title> [java] </employee> [java] </data:top-employees> BUILD SUCCESSFUL Total time: 4 seconds
wsasuser@wsasuser:~/apps/wso2wsas/samples/DataService$ ant clean Buildfile: build.xml clean: [delete] Deleting directory /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/database [delete] Deleting directory /home/wsasuser/apps/wso2wsas-2.0/samples/DataService/classes [delete] Deleting: /home/wsasuser/apps/wso2wsas-2.0/repository/dataservices/DataServiceSample1.dbs [delete] Deleting: /home/wsasuser/apps/wso2wsas-2.0/repository/dataservices/DataServiceSample2.dbs BUILD SUCCESSFUL Total time: 0 seconds