Creating flexible data services  for  enterprise SOA  with  WSO2 Data Services Sumedha Rubasinghe ( [email_address] ) ~ WS...
WSO2 Background <ul><li>Founded in August 2005 by leaders in XML and Web services technologies & standards, and open sourc...
Problem <ul><li>Data locked away in monolithic application silos </li></ul><ul><li>No unified away of accessing data </li>...
Alternative approaches to data access in a SOA <ul><li>Direct access to databases (JDBC,ODBC,..etc) </li></ul><ul><li>Use ...
How Can WSO2 Data Services Help? <ul><li>Ability to access most up-to-date data using a service call (brings you to the fr...
WSO2 Data Services in a nutshell <ul><li>A mechanism to take relational and other data locked </li></ul><ul><li>away in da...
Simple example <ul><li>Expose Employee contact data in MySQL database as a service </li></ul><ul><li>Table Structure </li>...
Simple example – GUI wizard step (1)
Simple example – GUI wizard step (2)
Simple example – GUI wizard step (3)
Simple example : configuration file <data name=&quot; ContactInfoService &quot;> <config> <property name=&quot;org.wso2.ws...
WSDL for the Service http://<IP>:<PORT>/services/ContactInfoService?wsdl2
Invoking the Service – HTTP binding http://<IP>:<PORT>/services/ContactInfoService/getContactInformation?name=Patterson
Invoking the Service – using TryIt Services > ContactInfoService > TryIt
Data Services Description Language <ul><li>In-house developed language for writing data services </li></ul><ul><li>Maps se...
Data Services Architecture <ul><li>Data Services are SOA equivalent of the Data Access Object(DAO) Pattern </li></ul><ul><...
WSO2 Data Services(DS),WSAS & Axis2 <ul><li>First appeared on WSAS 2.0 </li></ul><ul><li>WSO2 DS runs on top of Axis2 SOAP...
Currently Supported Data Sources <ul><li>Relational Databases </li></ul><ul><ul><li>Any database accessible via JDBC </li>...
Zero code approach <ul><li>Simple XML configuration file </li></ul><ul><li>Easy configuration for </li></ul><ul><ul><li>Da...
CRUD support <ul><li>Create/Read/Update/Delete most up to date data </li></ul>
Web console / Eclipse plugin wizard <ul><li>Simple Web based UI wizard </li></ul><ul><li>Eclipse plugin wizard </li></ul>
Customizable Response <ul><li>Service consumer – different input formats </li></ul><ul><li>Response format can be customiz...
Data as Resources(REST) <ul><li>Unique URL for each data item </li></ul><ul><ul><li>http://myserver.com/services/products/...
Single service - multiple data sources <ul><li>'Customer data' in MSSQL DB & 'Order data' in 'Derby DB' </li></ul><ul><li>...
Expose Stored Procedures & Functions <ul><li>Business logic in Stored procedures/functions  </li></ul><ul><li>Expose them ...
Built-in caching <ul><li>Infrequent updates to database data </li></ul><ul><li>Cache response & use it </li></ul><ul><li>C...
Access Throttling <ul><li>Control access frequency </li></ul><ul><li>Two options, </li></ul><ul><ul><li>Rate based throttl...
High Availability <ul><li>HA via clustering </li></ul><ul><li>Using Apache Tribes – Tomcat Clustering Communication module...
Security <ul><li>Supports WS Security using Apache Rampart </li></ul><ul><li>15 Security Scenarios </li></ul><ul><ul><li>B...
Built-in connection pooling <ul><li>Apache DBCP as the built-in pooling manager </li></ul><ul><li>Greatly increases the pe...
'Try It' for testing services <ul><li>Test your data services without leaving console </li></ul><ul><li>Ability to dynamic...
Management Console <ul><li>Monitor system usage </li></ul><ul><li>Statistics gathered include: </li></ul><ul><ul><li>Servi...
Up coming features <ul><li>LDAP Directories as data sources </li></ul><ul><li>SQL support for CSV & Excel </li></ul><ul><l...
Getting started ... <ul><li>Many online resources on WSO2 Oxygen Tank (wso2.org) </li></ul><ul><li>How to use MySQL 5 INOU...
Professional Services & support <ul><li>WSO2 is the leading provider of Open Source support for Apache WS projects </li></...
Summary
Summary <ul><li>Service enable data locked away in relational databases </li></ul><ul><li>Support for tables,views, functi...
Trainings <ul><li>Introduction to Data services  </li></ul><ul><ul><li>http://wso2.com/training/courses/owas001/ </li></ul...
Thank you
Upcoming SlideShare
Loading in …5
×

Creating Flexible Data Services For Enterprise Soa With Wso2 Data Services

1,829 views
1,738 views

Published on

Published in: Economy & Finance, Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,829
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Creating Flexible Data Services For Enterprise Soa With Wso2 Data Services

  1. 1. Creating flexible data services for enterprise SOA with WSO2 Data Services Sumedha Rubasinghe ( [email_address] ) ~ WSO2 Data Services Team ~
  2. 2. WSO2 Background <ul><li>Founded in August 2005 by leaders in XML and Web services technologies & standards, and open source </li></ul><ul><li>Building complete SOA platform, all 100% open source </li></ul><ul><li>Founders / leading contributors to all key Apache Web services / SOA projects </li></ul><ul><li>Selling support, training and services around the software & solutions </li></ul><ul><li>Global corporation with R&D center in Sri Lanka and offices in US & UK, totaling 60+ employees </li></ul>
  3. 3. Problem <ul><li>Data locked away in monolithic application silos </li></ul><ul><li>No unified away of accessing data </li></ul><ul><li>Need to access most recent data </li></ul><ul><li>Mergers/acquisitions/partnerships </li></ul>Challenges <ul><li>SOA demands access to data in heterogeneous data sources </li></ul><ul><li>Business users does not differentiate between application functionality or data access </li></ul><ul><li>Financial & budgeting constraints </li></ul>
  4. 4. Alternative approaches to data access in a SOA <ul><li>Direct access to databases (JDBC,ODBC,..etc) </li></ul><ul><li>Use of O/R mapping frameworks (Hibernate, Ibatis,...) </li></ul><ul><li>Enterprise Java Beans (EJBs) </li></ul><ul><li>CORBA </li></ul><ul><li>Problem </li></ul><ul><ul><li>Each approach demands different way of access </li></ul></ul><ul><ul><li>Developer time spent on data access, rather than implementing business functionality </li></ul></ul><ul><li>Thus comes the need for Data services </li></ul>
  5. 5. How Can WSO2 Data Services Help? <ul><li>Ability to access most up-to-date data using a service call (brings you to the front of the wave) </li></ul><ul><li>Single layer for accessing all the data needs of your SOA </li></ul><ul><li>Optimization efforts will be available to all the service consumers </li></ul><ul><li>Developer productivity – save time on developing similar data access mechanism for different applications </li></ul><ul><li>QoS – battle tested runtime </li></ul>
  6. 6. WSO2 Data Services in a nutshell <ul><li>A mechanism to take relational and other data locked </li></ul><ul><li>away in databases and make them available as WS-* </li></ul><ul><li>style Web services or as a set of REST style web </li></ul><ul><li>resources. </li></ul>
  7. 7. Simple example <ul><li>Expose Employee contact data in MySQL database as a service </li></ul><ul><li>Table Structure </li></ul><ul><li>How to do this? </li></ul>
  8. 8. Simple example – GUI wizard step (1)
  9. 9. Simple example – GUI wizard step (2)
  10. 10. Simple example – GUI wizard step (3)
  11. 11. Simple example : configuration file <data name=&quot; ContactInfoService &quot;> <config> <property name=&quot;org.wso2.ws.dataservice.driver&quot;> com.mysql.jdbc.Driver </property> <property name=&quot;org.wso2.ws.dataservice.protocol&quot;> jdbc:mysql://localhost:3306/dataservice_sample </property> <property name=&quot;org.wso2.ws.dataservice.user&quot;> dsuser </property> <property name=&quot;org.wso2.ws.dataservice.password&quot;> user123 </property> <property name=&quot;org.wso2.ws.dataservice.minpoolsize&quot;> 1 </property> <property name=&quot;org.wso2.ws.dataservice.maxpoolsize&quot;> 5 </property> </config> <query id=&quot; contactInfoQuery &quot;> <sql> select firstName,lastName,extension,email from employees where lastName = ? </sql> <param name=&quot; name &quot; sqlType=&quot; STRING &quot; /> <result element=&quot; Employees &quot; rowName=&quot; ContactInfo &quot;> <attribute name=&quot; LastName &quot; column=&quot; lastName &quot; /> <element name=&quot; FirstName &quot; column=&quot; firstName &quot; /> <element name=&quot; Extension &quot; column=&quot; extension &quot; /> <element name=&quot; Email &quot; column=&quot; email &quot; /> </result> </query> <operation name=&quot; getContactInformation &quot;> <call-query href=&quot; contactInfoQuery &quot; > <with-param name=&quot; name &quot; query-param=&quot; name &quot; /> </call-query> </operation> </data>
  12. 12. WSDL for the Service http://<IP>:<PORT>/services/ContactInfoService?wsdl2
  13. 13. Invoking the Service – HTTP binding http://<IP>:<PORT>/services/ContactInfoService/getContactInformation?name=Patterson
  14. 14. Invoking the Service – using TryIt Services > ContactInfoService > TryIt
  15. 15. Data Services Description Language <ul><li>In-house developed language for writing data services </li></ul><ul><li>Maps service requests to your SOA to queries operating on your database objects (tables, views, procedures & functions) </li></ul><ul><li>Maps query results to XML responses </li></ul><ul><li>Available online @ http://wso2.org/wiki/display/wsf/Data+Services+and+Resources </li></ul>
  16. 16. Data Services Architecture <ul><li>Data Services are SOA equivalent of the Data Access Object(DAO) Pattern </li></ul><ul><li>DS deal with different data sources similar to what DAO does </li></ul><ul><li>But, DS operate on a different layer </li></ul>
  17. 17. WSO2 Data Services(DS),WSAS & Axis2 <ul><li>First appeared on WSAS 2.0 </li></ul><ul><li>WSO2 DS runs on top of Axis2 SOAP Engine </li></ul><ul><ul><li>Equinox OSGI container </li></ul></ul><ul><ul><li>First of new breed of products </li></ul></ul><ul><li>Also available on WSO2's Web Services Application Server (WSAS) </li></ul><ul><li>Growing feature list with every new release </li></ul><ul><li>Open source (Apache licensed) </li></ul>
  18. 18. Currently Supported Data Sources <ul><li>Relational Databases </li></ul><ul><ul><li>Any database accessible via JDBC </li></ul></ul><ul><ul><li>Tables, views, stored procedures, functions </li></ul></ul><ul><li>URL accessible Comma Separated Value (CSV) files </li></ul><ul><li>Microsoft Excel (97 – 2003) spread sheets </li></ul><ul><ul><li>operation per work book </li></ul></ul><ul><li>Coming up </li></ul><ul><ul><li>Support for LDAP Trees </li></ul></ul>
  19. 19. Zero code approach <ul><li>Simple XML configuration file </li></ul><ul><li>Easy configuration for </li></ul><ul><ul><li>Database Administrators </li></ul></ul><ul><ul><li>System Administrators </li></ul></ul><ul><li>Easily portable </li></ul>
  20. 20. CRUD support <ul><li>Create/Read/Update/Delete most up to date data </li></ul>
  21. 21. Web console / Eclipse plugin wizard <ul><li>Simple Web based UI wizard </li></ul><ul><li>Eclipse plugin wizard </li></ul>
  22. 22. Customizable Response <ul><li>Service consumer – different input formats </li></ul><ul><li>Response format can be customizable </li></ul><ul><li>XSLT transformation capabilities (future feature) </li></ul><ul><li>Advance Transformations through ESB (eg. WSO2 ESB) </li></ul>
  23. 23. Data as Resources(REST) <ul><li>Unique URL for each data item </li></ul><ul><ul><li>http://myserver.com/services/products/ {product-code} </li></ul></ul><ul><ul><li>http://myserver.com/services/products/ AB342 </li></ul></ul><ul><ul><li>http://mybooks.com/services/book/ISBN2823 </li></ul></ul><ul><li>Support HTTP GET,POST,PUT,DELETE methods </li></ul><ul><li>Simple configuration </li></ul>
  24. 24. Single service - multiple data sources <ul><li>'Customer data' in MSSQL DB & 'Order data' in 'Derby DB' </li></ul><ul><li>The need – Orders along with Customers placed them </li></ul><ul><li>Link heterogeneous data sources (MySQL & CSV file) </li></ul><ul><li>Consolidated logical view – distribute data </li></ul>Derby MS SQL
  25. 25. Expose Stored Procedures & Functions <ul><li>Business logic in Stored procedures/functions </li></ul><ul><li>Expose them as web services within minutes </li></ul><ul><li>Power of pre-compiled procedures + Data Service in SOA </li></ul>
  26. 26. Built-in caching <ul><li>Infrequent updates to database data </li></ul><ul><li>Cache response & use it </li></ul><ul><li>Configurable options </li></ul><ul><ul><li>Timeout </li></ul></ul><ul><ul><li>Cache size </li></ul></ul><ul><ul><li>memory/file system </li></ul></ul>
  27. 27. Access Throttling <ul><li>Control access frequency </li></ul><ul><li>Two options, </li></ul><ul><ul><li>Rate based throttling </li></ul></ul><ul><ul><li>Frequency based throttling </li></ul></ul>
  28. 28. High Availability <ul><li>HA via clustering </li></ul><ul><li>Using Apache Tribes – Tomcat Clustering Communication module </li></ul><ul><li>Graceful shutdown </li></ul>
  29. 29. Security <ul><li>Supports WS Security using Apache Rampart </li></ul><ul><li>15 Security Scenarios </li></ul><ul><ul><li>Basic (4) </li></ul></ul><ul><ul><ul><li>Confidentiality </li></ul></ul></ul><ul><ul><ul><li>UsernameToken </li></ul></ul></ul><ul><ul><ul><li>Integrity </li></ul></ul></ul><ul><ul><ul><li>Non-repudiation </li></ul></ul></ul><ul><ul><li>Advance (11) </li></ul></ul>
  30. 30. Built-in connection pooling <ul><li>Apache DBCP as the built-in pooling manager </li></ul><ul><li>Greatly increases the performance </li></ul><ul><li>Ability to connect to Data sources bound to JNDI name </li></ul><ul><li>Use a pooling manager of your choice </li></ul>
  31. 31. 'Try It' for testing services <ul><li>Test your data services without leaving console </li></ul><ul><li>Ability to dynamically change the configuration & see the results </li></ul>
  32. 32. Management Console <ul><li>Monitor system usage </li></ul><ul><li>Statistics gathered include: </li></ul><ul><ul><li>Service usage </li></ul></ul><ul><ul><li>Endpoint load </li></ul></ul><ul><ul><li>Overall system performance </li></ul></ul><ul><li>Enable tracing of a running system and capture service level message traces </li></ul><ul><li>Configure system level logging and monitor logs directly from the console </li></ul><ul><li>Monitoring via JMX </li></ul>
  33. 33. Up coming features <ul><li>LDAP Directories as data sources </li></ul><ul><li>SQL support for CSV & Excel </li></ul><ul><li>Response Compression </li></ul><ul><li>Reading database credentials from runtime </li></ul><ul><li>Batch insert/update </li></ul><ul><li>APP support </li></ul><ul><li>support for SQL in (...where country_id in ('SL','US','UK');) </li></ul><ul><li>Content filtering based on logged in User </li></ul><ul><li>Improved Eclipse Plugin </li></ul><ul><li>More user friendly Web UI </li></ul>
  34. 34. Getting started ... <ul><li>Many online resources on WSO2 Oxygen Tank (wso2.org) </li></ul><ul><li>How to use MySQL 5 INOUT variables in Data Services? ( http://wso2.org/blog/sumedha/3082 ) </li></ul><ul><li>How to call MySQL 5 Stored Function from Data Service? ( http://wso2.org/blog/sumedha/3029 ) </li></ul><ul><li>How to call MySQL 5 stored procedure from Data Services?( http://wso2.org/blog/sumedha/2623 ) </li></ul><ul><li>How to call MySQL 5 view from Data Services? (coming up) </li></ul><ul><li>Data Service in 2 minutes - Movie (coming up) </li></ul><ul><li>Getting started with Data Services using Oracle ( http://wso2.org/blog/sumedha/3051 ) </li></ul><ul><li>Getting started with Data Services using WSO2 WSAS-2.0 ( http://wso2.org/blog/sumedha/2573 ) - using Derby as database </li></ul><ul><li>Getting started with Data Service Samples - Movie ( http://wso2.org/blog/sumedha/2590 ) - using Derby as database </li></ul><ul><li>How to page (http://wso2.org/library/3183) </li></ul><ul><li>Forum (http://wso2.org/forum/404) </li></ul><ul><li>Mailing list (ds-java-user@wso2.org) </li></ul>
  35. 35. Professional Services & support <ul><li>WSO2 is the leading provider of Open Source support for Apache WS projects </li></ul><ul><li>With over 60 employees in three geographies we can offer first class support </li></ul><ul><li>Range of support options up to 24x7 production </li></ul><ul><li>Support Backed by key Apache and OSS committers </li></ul><ul><li>More information - http://wso2.com/support/ </li></ul>
  36. 36. Summary
  37. 37. Summary <ul><li>Service enable data locked away in relational databases </li></ul><ul><li>Support for tables,views, functions & stored procedures </li></ul><ul><li>Data Service Description Language </li></ul><ul><li>Not limited to RDBMS (CSV,EXCEL,...) </li></ul><ul><li>Improved QoS </li></ul><ul><li>Professional support </li></ul>
  38. 38. Trainings <ul><li>Introduction to Data services </li></ul><ul><ul><li>http://wso2.com/training/courses/owas001/ </li></ul></ul><ul><li>Advance Data Services </li></ul><ul><ul><li>http://wso2.com/training/courses/owas002/ </li></ul></ul><ul><li>Visit http://wso2.com/training/ for more information </li></ul>
  39. 39. Thank you

×