Download Web Services in Oracle Database 10g and beyond

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Session id: 40064
Web Services in Oracle
g
Database 10 and beyond
Ekkehard Rohwedder
Manager, Web Services
Oracle Corporation
Content
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
Motivation – 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 sources
=> Enterprise Information Integration:
=> Can use table functions to virtualize Web
Services as tables
Motivation – 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
Content
 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
Web Services
– An Overview from 10,000 feet
An application or component with
Three Things:
1. a URI
2. interacts through XML via internet
3. interfaces/binding described in XML
Web Services
– An Overview from 10,000 feet
Three Specifications
1. SOAP – the XML-based message protocol
2. WSDL – the service description
3. UDDI – the Web Service “phone directory”
Web Services
– An Overview from 10,000 feet
Service Consumer
connect
Firewall
http://www.myserver.com/a/b
Service Provider
package and deploy
Web Services
– An Overview from 10,000 feet
Service Consumer
connect
invoke service/methods
Invoke: XML
SOAP message
Firewall
<se:Envelope
xmlns:se=
“http://schemas.xmlsoap.org/soap/envelope/”
se:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/”>
<se:Body>
<Add xmlns="urn:add-operation">
<arg1>20</arg1>
<arg2>20</arg2>
</Add>
</se:Body>
</se:Envelope>
http://www.myserver.com/a/b
Service Provider
package and deploy
implement
Web Services
– An Overview from 10,000 feet
Service Consumer
connect
invoke service/methods
<wsdl:definitions>
<wsdl:types></wsdl:types>
<wsdl:message></wsdl:message>
<wsdl:portType></wsdl:portType>
<wsdl:binding>
<wsdl:operation></wsdl:operation>
</wsdl:binding>
<wsdl:service></wsdl:service>
</wsdl:definitions>
UDDI
Repository
Publish WSDL
Service Provider
implement
package and deploy
describe and publish
Web Services
– An Overview from 10,000 feet
Service Consumer
Get or Locate WSDL
find/locate
bind
connect
invoke service/methods
<wsdl:definitions>
<wsdl:types></wsdl:types>
<wsdl:message></wsdl:message>
<wsdl:portType></wsdl:portType>
<wsdl:binding>
<wsdl:operation></wsdl:operation>
</wsdl:binding>
<wsdl:service></wsdl:service>
</wsdl:definitions>
Service Provider
implement
package and deploy
describe and publish
UDDI
Repository
Web Services
– An Overview from 10,000 feet
Service Consumer
find/locate
bind/connect
2- Get or Locate
WSDL, Bind
invoke service/methods
UDDI
Repository
“Shortcut”
3-Connect,
Invoke SOAP
1-Publish WSDL
Service Provider
implement
package and deploy
describe and publish
Content
 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
Consumed by the Database
– Web Service call-outs
Oracle Database
Get WSDL and bind
Service Consumer
Java and PL/SQL
bind
connect
invoke service/methods
Service Provider
Connect,
invoke SOAP implement
package and deploy
describe and publish
“access external Web
Services from DB
code: stock quotes,
weather info, Web
search, scientific data,
enterprise data, etc.”
Web Service Call-Outs
Oracle Database
Dyn Inv Itf
SQL
Engine
Table
Function
Connect,
invoke SOAP
PL/
SQL
Wrap
per
Java
Client
Proxy
Service Provider
implement
package and deploy
describe and publish
Java
WS
Client
Stack
Web 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
Web Service Call-Outs – Java Clients
 Using Dynamic Invocation Interface:
Service s = factory.createService(serviceQname);
// Note: can also consume a WSDL document
Call call = service.createCall(portQname);
call.setTargetEndpointAddress(endpoint);
call.setProperty(…,…); …
call.setReturnType(returnTypeQname);
call.setOperationName(opQname);
call.addParameter(pname, ptype, pmode);
Object[] params = { … };
Object result = call.invoke(params);
Web Service Call-Outs – Java Clients
 Generate static client proxy with JPublisher
jpub -proxywsdl=WSDL-location -user=user/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(“…”);
Integer result = itf.operation(p_inout, p_in);
…
Web Service Call-Outs – PL/SQL clients
 Dynamic PL/SQL clients use UTL_DBWS package
svc
call
retval
outargs
:=
:=
:=
:=
UTL_DBWS.createService(WSDLLocation);
UTL_DBWS.createCall(svc, operation);
UTL_DBWS.invoke(call, args);
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
Web 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;
Content
 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
The 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 JDBC
=> now through Web Services
The Database Provides
- Application Server Hosts Web Service
Service Consumer
find/locate
bind/connect
Get WSDL and bind
invoke service/methods
Connect,
invoke SOAP
Oracle
Application Server
Hosted as J2EE
Web Service
delegate
package and deploy
describe and publish
JDBC
Oracle Database
Service
Implementation
(PL/SQL, SQL,
Java, XML, AQ, …)
Web Service Call-Ins
 Oracle Application Server framework
–
J2EE-based, JAX-RPC Web Services
=> deployment, security, management
 Tools
–
–
JDeveloper, Enterprise Manager
Web Services Assembler (JPublisher),
DCM Control
Web 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
Web Service Call-Ins
– Web Services Assembler configuration
<db-port>
<uri>/statelessSP</uri>
<schema>scott/tiger</schema>
<!-- db schema -->
<db-conn>jdbc:oracle:thin:@host:5521:sqlj</db-conn>
<!-- db connection -->
<datasource-location>jdbc/ds</datasource-location>
<!– runtime datasource -->
<port-name>Company</port-name> <!-- Java interface -->
<prefix>acme</prefix>
<!-- Java package -->
… the database resource that is published as a Web Service …
</db-port>
•
Invocation: java
-jar wsa.jar
-config config.xml
Web Service Call-Ins
– PL/SQL packages
• … the database resource that is published … ==
<plsql-package>
<!-- db package to be exposed -->
<name>Company</name>
<!– optional: methods to expose -->
<method>method1</method>
<method>method2</method>
</plsql-package>
Web Service Call-Ins
– Java classes in the DB
• … the database resource that is published … ==
<db-java>
<!– server-side Java class to be exposed -->
<name>foo.bar.Baz</name>
<!– optional: methods to expose -->
<method>method1</method>
<method>method2</method>
</db-java>
• Will expose public static methods with serializable
arguments.
Web 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
Web Service Call-Ins
– SQL Queries and DML statements
• … the database resource that is published … ==
<sql-statement>
<operation>
<!-- a SQL Query -->
<name>getEmp </name>
<statement>select ename from emp
where ename=:{myname VARCHAR}
</statement></operation>
<operation> <name>updateEmp</name> <!-- SQL DML -->
<statement>update emp SET sal=sal+500
where ename=:{theName VARCHAR}</statement>
</operation>
</sql-statement>>
Web 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
Content
 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
Database 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
Database Grid Services
• DAIS Specification – generic access
=> standard way for accessing the DB via XML
=> 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)
Content
 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
Conclusion
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
Conclusion
 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
Conclusion – 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
QUESTIONS
ANSWERS
Related documents