Title: Web Services in Oracle Database 10g and beyond
1(No Transcript)
2Web Services in Oracle Database 10g and beyond
Session id 40064
- Ekkehard RohwedderManager, Web Services
- Oracle Corporation
3Content
- Motivation
- Web Services (An overview from 10,000 feet)
- Consumed by the Database Web Service call-outs
- Installation
- Java and PL/SQL clients
- The Database Provides Web Service call-ins
- PL/SQL and Java
- DML and Queries
- Database Grid Services
- Conclusion
4Motivation Who are you?
- Are you writing programs in the Database? Using
SQL, PL/SQL, or Java? - Then you may want to consume external Web
Services - E.g. weather, stock prices, tax tables, products,
genome data - E.g. as SQL query data sourcesgt Enterprise
Information Integrationgt Can use table
functions to virtualize Web Services as tables
5Motivation Who are you?
- Want to get to Resources in Database?By using
Web Services? - Then you want to provide Database Web
Services - E.g. weather, stock prices, tax tables, products,
genome data - E.g. PL/SQL packages and Java stored procedures
XML, MultiMedia messaging capabilities
6Content
- Motivation
- Web Services (An overview from 10,000 feet)
- Consumed by the Database Web Service call-outs
- Installation
- Java and PL/SQL clients
- The Database Provides Web Service call-ins
- PL/SQL and Java
- DML and Queries
- Database Grid Services
- Conclusion
7Web Services An Overview from 10,000 feet
- An application or component with Three Things
- a URI
- interacts through XML via internet
- interfaces/binding described in XML
8Web Services An Overview from 10,000 feet
- Three Specifications
- SOAP the XML-based message protocol
- WSDL the service description
- UDDI the Web Service phone directory
9Web Services An Overview from 10,000 feet
Firewall
http//www.myserver.com/a/b
- Service Provider
- package and deploy
10Web Services An Overview from 10,000 feet
- Service Consumer
- connect
- invoke service/methods
ltseEnvelope xmlnssehttp//schemas.xmlsoap
.org/soap/envelope/ seencodingStyle"http//
schemas.xmlsoap.org/soap/encoding/gt ltseBodygt
ltAdd xmlns"urnadd-operation"gt
ltarg1gt20lt/arg1gt ltarg2gt20lt/arg2gt
lt/Addgtlt/seBodygt lt/seEnvelopegt
Invoke XMLSOAP message
Firewall
http//www.myserver.com/a/b
- Service Provider
- package and deploy
- implement
11Web Services An Overview from 10,000 feet
Service Consumer
UDDI Repository
- connect
- invoke service/methods
ltwsdldefinitionsgt ltwsdltypesgtlt/wsdltypesgt
ltwsdlmessagegtlt/wsdlmessagegt ltwsdlportTypegtlt/ws
dlportTypegt ltwsdlbindinggt ltwsdloperationgtlt/w
sdloperationgt lt/wsdlbindinggt
ltwsdlservicegtlt/wsdlservicegt lt/wsdldefinitionsgt
Publish WSDL
- Service Provider
- implement
- package and deploy
- describe and publish
12Web Services An Overview from 10,000 feet
- Service Consumer
- find/locate
- bind
- connect
- invoke service/methods
UDDI Repository
Get or Locate WSDL
ltwsdldefinitionsgt ltwsdltypesgtlt/wsdltypesgt
ltwsdlmessagegtlt/wsdlmessagegt ltwsdlportTypegtlt/ws
dlportTypegt ltwsdlbindinggt ltwsdloperationgtlt/w
sdloperationgt lt/wsdlbindinggt
ltwsdlservicegtlt/wsdlservicegt lt/wsdldefinitionsgt
- Service Provider
- implement
- package and deploy
- describe and publish
13Web Services An Overview from 10,000 feet
- Service Consumer
- find/locate
- bind/connect
- invoke service/methods
UDDI Repository
2- Get or Locate WSDL, Bind
Shortcut
3-Connect, Invoke SOAP
1-Publish WSDL
- Service Provider
- implement
- package and deploy
- describe and publish
14Content
- Motivation
- Web Services (An overview from 10,000 feet)
- Consumed by the Database Web Service call-outs
- Installation
- Java and PL/SQL clients
- The Database Provides Web Service call-ins
- PL/SQL and Java
- DML and Queries
- Database Grid Services
- Conclusion
15Consumed by the Database Web Service call-outs
Oracle Database
Get WSDL and bind
- Service ConsumerJava and PL/SQL
- bind
- connect
- invoke service/methods
access external Web Services from DB code stock
quotes, weather info, Web search, scientific
data, enterprise data, etc.
- Service Provider
- implement
- package and deploy
- describe and publish
Connect, invoke SOAP
16Web Service Call-Outs
Oracle Database
SQLEngine
Dyn Inv Itf
Java WS Client Stack
PL/SQL Wrapper
Java Client Proxy
TableFunction
Connect, invoke SOAP
- Service Provider
- implement
- package and deploy
- describe and publish
17Web Service Call-Outs - Installation
- Preloaded in Oracle 10g Database JVM
- initdbws.sql script (under OH/sqlj)
- loads utl_dbws_jserver, sqljutl JAR files
- creates SYS.UTL_DBWS package
- JAX-RPC client stack for Web Services in
JavaVM - grant java.net.SocketPermission to users of WS
client library
18Web Service Call-Outs Java Clients
- Using Dynamic Invocation InterfaceService s
factory.createService(serviceQname) //
Note can also consume a WSDL document Call
call service.createCall(portQname)call.setTarg
etEndpointAddress(endpoint)
call.setProperty(,) call.setReturnType(retur
nTypeQname)call.setOperationName(opQname)
call.addParameter(pname, ptype,
pmode)Object params Object result
call.invoke(params)
19Web Service Call-Outs Java Clients
- Generate static client proxy with JPublisher jpub
-proxywsdlWSDL-location -useruser/pwd - Creates static JAX-RPC client-proxy code
- Loads Java code into the database
- Invoke via client interface
- CInterf itf new Client_Impl().getCInterfPort()
)((Stub)itf). _setProperty(,)
StringHolder p_inout new StringHolder()I
nteger result itf.operation(p_inout, p_in)
20Web Service Call-Outs PL/SQL clients
- Dynamic PL/SQL clients use UTL_DBWS packagesvc
UTL_DBWS.createService(WSDLLocation)call
UTL_DBWS.createCall(svc, operation)retval
UTL_DBWS.invoke(call, args)outargs
UTL_DBWS.get_output_values(call) - uses ANYDATA to represent argument values
(primitive types only) - all names are qualified
- explicitly close services and calls when done
21Web Service Call-Outs PL/SQL clients
- Static PL/SQL clients (packages) are
automatically created by JPublisher - generation of Java glue to expose static Java
methods - generation of PL/SQL package call-specs
- generation of SQL object types for complex
arguments - installation of Java and PL/SQL code into
database - Can be invoked from SQL and from PL/SQL code
- SELECT WS_PACK.WS_OP(...) FROM ...
- BEGIN ... x WS_PACK.WS_OP(...) END
22Content
- Motivation
- Web Services (An overview from 10,000 feet)
- Consumed by the Database Web Service call-outs
- Installation
- Java and PL/SQL clients
- The Database Provides Web Service call-ins
- PL/SQL and Java
- DML and Queries
- Database Grid Services
- Conclusion
23The Database Provides- Web Service Call-Ins
- Database Capabilities
- PL/SQL and Java Stored Procedures
- SQL queries and DML
- XML capabilities (XDB)
- Advanced Queueing (AQ) and Streams
- Access from JDBCgt now through Web Services
24The Database Provides- Application Server Hosts
Web Service
- Service Consumer
- find/locate
- bind/connect
- invoke service/methods
Get WSDL and bind
Oracle Database
OracleApplication Server
Connect, invoke SOAP
- Hosted as J2EEWeb Service
- delegate
- package and deploy
- describe and publish
Service Implementation(PL/SQL, SQL, Java, XML,
AQ, )
JDBC
25Web Service Call-Ins
- Oracle Application Server framework
- J2EE-based, JAX-RPC Web Servicesgt deployment,
security, management - Tools
- JDeveloper, Enterprise Manager
- Web Services Assembler (JPublisher), DCM Control
26Web Service Call-Ins
- Web Services Assembler configuration
- PL/SQL package, Java class, or SQL statement that
is to be exposed data source at runtime - connection information for Java code generation
- name and package of generated Java class
- Web context
- EAR deployment, securing, UDDI publishing
- Enterprise Manager or DCM Control
- Use JDeveloper wizard to automate task
- browse connection, right click over package and
publish as Web Service
27Web Service Call-Ins Web Services Assembler
configuration
- ltdb-portgt lturigt/statelessSPlt/urigtltschemagtscott/
tigerlt/schemagt lt!-- db schema
--gtltdb-conngtjdbcoraclethin_at_host5521sqljlt/db-
conngt lt!-- db
connection --gt ltdatasource-locationgtjdbc/dslt/data
source-locationgt Â
lt! runtime datasource --gtltport-namegtCompanylt/por
t-namegt lt!-- Java interface --gt
ltprefixgtacmelt/prefixgt lt!-- Java package
--gt the database resource that is published as
a Web Service - lt/db-portgt
- Invocation java -jar wsa.jar -config
config.xml
28Web Service Call-Ins PL/SQL packages
- the database resource that is published
- ltplsql-packagegtlt!-- db package to be exposed --gt
ltnamegtCompanylt/namegtlt! optional methods
to expose --gt ltmethodgtmethod1lt/methodgt
ltmethodgtmethod2lt/methodgt - lt/plsql-packagegt
29Web Service Call-Ins Java classes in the DB
- the database resource that is published
- ltdb-javagtlt! server-side Java class to be
exposed --gt ltnamegtfoo.bar.Bazlt/namegtlt!
optional methods to expose --gt
ltmethodgtmethod1lt/methodgtltmethodgtmethod2lt/methodgt - lt/db-javagt
- Will expose public static methods with
serializable arguments.
30Web Service Call-Ins PL/SQL packages and Java
classes
- Automatic support for PL/SQL types BOOLEAN,
record, and table types.Generation of SQL object
types as necessary - Native Java calls use Java serialization over
JDBC - OUT and IN OUT arguments supported in generated
Java code - holder classes in 10g JAX-RPC
- JavaBeans in 9.0.4 stack
- JPublisher generates Java wrapper classes this
is useful by itself outside of DB Web Services
31Web Service Call-Ins SQL Queries and DML
statements
- the database resource that is published
- ltsql-statementgtltoperationgt lt!-- a SQL Query
--gt ltnamegtgetEmp lt/namegt ltstatementgtselect
ename from emp where enamemyname
VARCHAR lt/statementgtlt/operationgt - ltoperationgt ltnamegtupdateEmplt/namegt lt!-- SQL
DML --gt ltstatementgtupdate emp SET salsal500
where enametheName
VARCHARlt/statementgtlt/operationgt - lt/sql-statementgtgt
32Web Service Call-Ins SQL Queries and DML
statements
- myname VARCHAR is a SQL host variable
- DML statements automatically committed / rolled
back. Provide a batch (array) API as well - SQL queries / REF CURSOR arguments mapped to
- structured data (JavaBean format), or
- WebRowset or SQL/XML formats
- SYS.XMLTYPE mapped to XML subtrees
33Content
- Motivation
- Web Services (An overview from 10,000 feet)
- Consumed by the Database Web Service call-outs
- Installation
- Java and PL/SQL clients
- The Database Provides Web Service call-ins
- PL/SQL and Java
- DML and Queries
- Database Grid Services
- Conclusion
34Database Grid Services
- GRID efficient utilization of resources
- GRID infrastructure defined by GGF (Global Grid
Forum) is based on Web Services technologies - DAIS Working Group in GGF(Database Access and
Integration Services WG) - databases become GRID resources
- generic access mechanism XML version of JDBC
- distribution of results
35Database Grid Services
- DAIS Specification generic accessgt standard
way for accessing the DB via XMLgt distribution
mechanism leveraging DB capabilities of
Advanced Queueing, Streaming - server-side XML support further integrated with
DBWS - support for asynchronous invocation and
notification mechanisms for DBWS - full JDeveloper support (today PL/SQL call-in)
36Content
- Motivation
- Web Services (An overview from 10,000 feet)
- Consumed by the Database Web Service call-outs
- Installation
- Java and PL/SQL clients
- The Database Provides Web Service call-ins
- PL/SQL and Java
- DML and Queries
- Database Grid Services
- Conclusion
37Conclusion
- Database Web Services is
- invoking database APIs such as SQL, PL/SQL, and
Java through Web Services - re-use PL/SQL and Java stored procedures
- utilize SQL queries and DML statements
- handle result sets, XML documents, Relational,
Text, Spatial, Binary and Multi Media data - accessing external Web Services as SQL data
sources from Java and PL/SQL database code
38Conclusion
- JAX-RPC client in Oracle JavaVM for call-outs
- Oracle Application Server for DB call-ins
- create, deploy, secure, and publish Web Services
- JDeveloper IDE
- Oracle Enterprise Manager
- command line Web Service Assembler (with
JPublisher), DCM Control
39Conclusion What Next
- Visit the Oracle Database Web Services demo on
the DEMOgrounds - Visit the Web Services pages on OTN
http//otn.oracle.com - Download the 10g Oracle Application Server
preview with JAX-RPC Web Services
40A
41(No Transcript)