Data Services is a convenient mechanism to provide a Web service interface for data stored in some data sources. Data sources such as relational databases, CSV files and Microsoft Excel files can be easily service enabled using Data Services. Now, the data can be exposed and accessed in a secure(using WS-Security) and reliable(using WS-ReliableMessaging) manner, and is also available for mashing-up with other Web services.
This guide assumes MySQL is configured in your system. If not, please download MySQL 5 or later version from here.
mysql>create database employeedb;
mysql>use employeedb;
mysql>create table employee(id VARCHAR(10) NOT NULL PRIMARY KEY, name VARCHAR(100), address VARCHAR(100));
mysql> insert into employee values('01','john','Boston');
mysql> insert into employee values('02','Micheal','Dallas');
mysql> insert into employee values('03','richard','Chicago');
mysql> exit;
Since we are using a MySQL database for our demonstration, we should copy mySQL JDBC driver to WSAS_HOME/lib/extensions directory (e.g:- cp mysql-connector-java-5.0.3-bin.jar /home/user/wso2wsas/wso2wsas-3.1.0/lib/extensions).
After copying the necessary jdbc driver, make sure to restart the server.
We are ready to create our first data service. We will make use of the sample MySQL 'employeedb' database we have created in the previous step.
Enter the following values in 'Data Source Type: RDBMS' popup window.
DataBase Type = MySQL
Driver Class = com.mysql.jdbc.Driver
JDBC URL = jdbc:mysql://localhost:3306/employeedb
User name = root
Query ID = DataQueryEmp
SQL Statement = select id, name, address from employee
Grouped by Element = employees
Row name = employee
Row namespace = http://test.org
SQL Column Name = id
Schema Type = xs:string
Allowed User Roles = "admin"
output field name = name
SQL Column Name = name
Schema Type = xs:string
Allowed User Roles = "admin"
output field name = address
SQL Column Name = address
Schema Type = xs:string
Allowed User Roles = "admin"
We have added one query to our data service configuration. In this example, we do not use an SQL statement which accepts input parameters. Therefore, we can ignore 'Input Mappings'.
You will notice that the query we have created in the previous step will be shown in 'Query' dropdown of the 'Add New Operation' popup window. Provide a name for the operation (e.g:- getAllEmployees) and click on 'OK'.
Your new data service will be listed in 'Deployed Services' page as follows.
In this section, we'll look at two different ways to invoke our data service without writing single line of code. First we will invoke our data service using 'Tryit' utility which integrated in to Solution Management console. Then we invoke it using a simple HTTP GET request.
Click on 'getAllEmployees' button to invoke our data service. You will get the response message in the same page. Note that employee id and name will be returned as xml elements and address will be wrapped as an attribute. This is due to our output mapping configuration at step 2 of the wizard. We have configured id and name as element mapping types and address as attribute mapping type. You can edit them and observe the associated changes in response very easily using Tryit.
http://10.100.1.150:9763/services/EmployeeDataService/getAllEmployees
You will get the same result back as in 'Tryit' approach
For more details on the Data services see User Guide