Reaching out from PL/SQL (Oracle Open World 2011)
-
Upload
lucas-jellema -
Category
Technology
-
view
2.584 -
download
2
description
Transcript of Reaching out from PL/SQL (Oracle Open World 2011)
REACHING OUT FROM PL/SQL
Lucas Jellema – AMIS (Nieuwegein, The Netherlands)
Oracle Open World 2011
ASK WHAT YOU CAN DO FOR YOUR COUNTRY?!
Do not ask what your country can do for you
AND ALSO ASK WHAT YOU (THROUGH PL/SQL & THE DATABASE) CAN DO FOR YOUR “ENVIRONMENT”?!
By all means, ask what the world around you can mean for your PL/SQL application
Database(SQL & PL/SQL)
Database(SQL & PL/SQL)
SOA
Database(SQL & PL/SQL)
User Interface
Chat (IM)
File (Excel, PDF,…)
RSS
Queue
REST
WebService
File, O/S
JDBC, SQL Net, DB Link
THE HUMAN SIDE OF THINGS
EMP
CHALLENGES
EMP
Q
Mail Server
receiveMailsendEmail
JSP_WRAPPER
Job
EMAILS
retrieve_emails
`
AQ
notify_email_event
Process_email
EMP
JAVA STORED PROCEDURES
• Java Classes can be loaded into Oracle Database as Java Stored Procedures
• The “JSPs” are wrapped with a PL/SQL wrapper– When invoked no different from normal PL/SQL units
• JSPs are in same session and transaction• JSPs are static• Java Stored Procedures can complement
PL/SQL– for example in dealings with O/S, Mail Server,
Application Server, IM Server, TCP/IP, Embedded, Devices
• JMX is exposed by Java-in-Database to monitor
JAVA STORED PROCEDURES – JAVA BEHIND PL/SQL WRAPPER
1• Write Functional Java
2• Wrap with PL/SQL
3• Load into Database
4• Set appropriate Privs
5• Invoke JSP via PL/SQL Interface
THE ULTIMATE OUTREACH…
OTHER SCENARIO WITH DATABASE AS INITIATOR OF THE DIALOG• An Update of an Employee’s Salary takes
place• After Update Row level trigger fires
– creates job to send out an email to have someone approve the salary raise
– Sets the status of the salary to ‘awaiting approval’
• Email is sent to approver• Approvers sends an answer
– Decision and comments
• Answer is received & processed by database– Status of salary record is updated
EJB
JMS
Libraries for:• Graphical Manipulation• Translation, • Calculation,• Encryption,• …
CommunicationProtocols: http, ftp, tcp ip, sms, grid, JDBC, JDBC-ODBC, .Net, …
Operating System& File System
dbms_epg(mod_plsql)
http
XMLDB
httpftp
webdav
utl_mailutl_fileexternal
table
APEX
THE ULTIMATE DATABASE USER INTERFACE
dbms_epg(mod_plsql)
DATABASE REACHING OUT TO HUMAN PARTNERS• DBMS_EPG (or good old mod_plsql)
– Expose HTML and RSS & Process HTTP requests
• XMLDB– Expose and allow manipulation of resources
through HTTP, FTP and WEBDAV
• Stored Java Procedures to– Interact with Mail Server, Chat; leverage – Process human file formats (PDF, Excel, images,
…)
• Supplied packages: UTL_MAIL, UTL_FILE
EXPOSE STORED PROCEDURES VIA HTTP• Stored Procedures and Packages can be
configured to handle HTTP requests– Using the supplied DBMS_EPG package
• They compose the HTTP response by writing strings to the HTP.P procedure– Or return binary documents using wpg_docload
• Database infrastructure handles HTTP communication – including security, headers, get/post parameters
• Embedded PLSQL Gateway – powering– APEX and other PL/SQL based HTML UI– Expose RESTful Web Services– Publish RSS Feeds– Asynchronous HTTP notifications
PUBLISH PACKAGE AS HTTP-BASED API USING DBMS_EPG• Hide database protocol
– Not its physical location nor the schema, and user authentication
• HTTP communication is truly cross technology– Browser, Java, .Net, JavaScript & RIA clients, …
• Is also possibly remote, across networks, firewalls etc. – easier than normal JDBC connections
• Can publish in various formats– Text, HTML, CSV, JSON, XML, RSS
• Use case:cross-technology, internal no WS*/ESB
http
SIMPLE DBMS_EPG EXAMPLE
sys
scott
scott
MACHINATIONS
CALL FOR DECOUPLING
• Minimize dependencies and maximize interoperability and reuse
• Through decoupling:– Encapsulate functionality, legacy and
complexity– Interact through well defined interfaces– Support standard protocols and cross
technology facilities (XML, HTTP, JSON, SQL)– Leverage asynchronous exchange whenever
relevant• Take care of the data(base)
– ‘No SQL’ approach: SQL is encapsulated inside database API (View and Package)
– SQL is not left to application developers or 3rd party frameworks
– Data integrity is enforced inside the database
EXTREME ENCAPSULATION
• View on top of table(collection)– With instead of trigger handling DML
– Data queried from NUMBERS is produced in PL/SQL – no underlying table involved
– Data manipulated in NUMBERS is processed in memory
View Numbers
Package P
EXTREME ENCAPSULATION
Database(SQL & PL/SQL)
EmailChat (IM) RSS
Queue
REST
WebService
File, O/S
JDBC, SQL Net, DB Link
dbms_epg(mod_plsql)
http
XMLDB
httpftp
webdav
utl_mailutl_fileexternal
table
utl_http(httpuritype)
http
JDBC/ODBCOCI, DB Link
utl_tcp
AdvancedQueuing
AQjms
nativedbws
Chat/IM XMPP Server
HTTP
JDBC
Other(Email, FTP/File,
XMPP/Chat)
SOA Suite
Oracle Service
Bus
DB
AQ
JMS
EJB
FileFTP
SDO
WS
http
PL/SQL package
Table
AQ
Native DB WebService
EPG
View
WebLogic Server Database
JAX-WS
ADF BC/SDO WS
EJB/JPA
Email ServerFile/FTP Server
UMS
XMLDB
XMLTypes
XMLXML & XSD
JSON/ CSV
Ref Cursor
Types & CollJPublisher
WS
utl_file, BFILE,
URITYPE
JMS Queue
XMLRelational/Oracle Type
BE A GOOD HOST
• Provide services– Views for easy querying– Stored Procedure based APIs
• For data retrieval and data manipulation
– Queues as way-in (publish) as well as way-out (allow subscription) for events
– Send change notifications• Http based push messages• Query Result Change Notification
THE SUPER HOST
Query Result Change Notification
QUERY RESULT CHANGE NOTIFICATION• Continuous Query Notification:
– Send an event when the result set for a query changes
– Background process calls PL/SQL Handler or Java Listener or OCI client when thecommit has occurred
– Event contains rowidof changed rows
• Used for:– Refreshing specific
data caches (middletier, global context)
– (custom) Replication
PL/SQL
Java Listener
DATABASE TO MIDDLE TIER TO CLIENT NOTIFICATION THROUGH HTTP
Application Scope event handler
HTTP
Proce-dure
UTL_HTTP
servlet
Session cache
EMP
servlet1
2
3 45
6
7
8
9A
D
B
C
Job
CROSS TIER PUSH
Web Browser
RDBMS
JEE Application Server
trg
job
servletevt lsnr
MORE INTERACTION FROM & TO THE DATABASE• Files into the database• Database to leverage O/S• Stored Java for non-human interactions• WebServices – publish and consume• Engage Middle Tier as ‘agent’
THE BROWSER IN YOUR DATABASEINTRODUCING UTL_HTTP
≈select utl_http.request ( 'http://technology.amis.nl/blog/?feed=rss2' , null )from dual
THE DATABASE CAN ASK THE MIDDLE TIER TO ACCESS AND PROVIDE SERVICES
• Get information from (or to) services on the intranet or internet
• Publish/Send information to the internet (RSS, email, chat)
• Can tell the middle tier– Interesting events – Alert about
(im)pending issues, attempted rule violations, …
– The outcome of batch calculations
• DB vs. Middle Tier:Security, Functionality, Load Balance
WebLogic Server 11g
SOA Suite 11g
AQ
Web App
HAPPY CHATTING – IM FROM THE DATABASE• Database can call a middle
tier service using utl_httpor HTTPURITYPE– Passing in the destination
and the message content• This Service sends it
onwards to the Google Talk Server WebLogic Server 11g
Service
CHAT_MGR
Service
DATABASE ACTIVELY INFORMS ON EVENTS
WebLogic Server 11g
Service
CHAT_MGR
Service
EMP
CHAT MANAGER PACKAGEcreate or replace package body chat_mgras
c_im_destination CONSTANT varchar2(100):= 'im_account'; c_im_service_base_url CONSTANT varchar2(100):= 'http://host/service?'; c_amp constant varchar2(5) := chr(38);
procedure send_im_message( p_msg in varchar2) is l_response varchar2(32000);begin l_response:= utl_http.request ( c_im_service_base_url ||'imDestination='||c_im_destination ||c_amp||'msgBody='||replace(p_msg,' ', '%20') , null );end send_im_message;
end chat_mgr;
EMP INFORMERcreate or replace trigger mananager_sal_update_watcherbefore insert or update of salon empfor each rowwhen (new.job ='MANAGER' and new.sal > 4000 and new.sal > nvl(old.sal,0))declare l_msg varchar2(32000);begin l_msg:= 'Selfenrichment ' ||'Salary of '||:new.ename ||' ( manager in Department '||:new.deptno||') ' ||'is changed to '||:new.sal ; chat_mgr.send_im_message ( p_msg => l_msg );end;
THE TALKING DATABASE
Details on the Employee. Employee name is Smith, his job is Analyst. He
works in department 20…
EMP
THE TALKING DATABASE
PL/SQLexposed through dbms_epg
httpaudio/mpeg, binary data
RESTFUL WEBSERVICES
• Simple, stateless, light weight, http-based message exchange protocol– Use standard get, put, post, delete operations– Use URL to pass resource reference
• Small, easy-to-understand messages• Typically XML or JSON based• Not using SOAP, or the WS*-stack• Often used directly from User Interface –
(AJAX enabled) JavaScript– RESTful services are primary communication
mechanism for Mobile Apps
RESTFUL ARCHITECTURE
RESTful PL/SQL APIexposed through dbms_epg
httphttp
RESTFUL RESOURCE NAVIGATION
PUBLISH REST-FUL HTTP API – DIRECTLY ON TOP OF THE RDBMS
PUBLISH REST-FUL HTTP API – DIRECTLY ON TOP OF THE RDBMS
CONSUMING REST-FUL SERVICES
• Invoking a REST-ful service is simply making an HTTP request to some URL
• Can be done through:– utl_http– httpuritype– Stored Java
• Result can be processed as just a string or as XML, JSON or other format– OSS Libraries can help with special formats, for
example PL/JSON for JSON
SOAP WEBSERVICES
• All messages (input and output) are XML• The message consists of two parts inside an
envelope (a SOAP XML wrapper)– The header with meta-data– The body with the contents to be handled by or
returned by the service• The WebService Definition Language (WSDL)
document describes the service• An XML Schema Document (XSD) describes
the structure of the XML messages– XSD is like an ERD or Table Design
CALLING ‘FORMAL’ WS* ANDSOAP BASED WEB SERVICES• Invoking a SOAP WS* service is making an
HTTP request to some URL• Can be done through:
– utl_http– Stored Java– utl_dbws
• Request and Responseare both SOAP-wrapped XML messages– Using XMLDB
functionality including XML Type these can easily by composed, transformed, validated and parsed
ORACLE RDBMS 11G – NATIVE DATABASE WEBSERVICES• Database Schema can be published through
native database web services– Each package corresponds with a WSDL
• With an operation for each Procedure or Function• Auto-mapping from PL/SQL input and output
parameters to WSDL (XSD) Types
– WSDL and XSD are dynamically generated– A generic Query Service (across schema) is
exposed• To execute user defined queries• With support for pagination and some formatting
– http and https is supported– Limited control over WSDL & XSD
– Use case: internal, cross technology, WS enabled client, no ESB or Application Server available
SUMMARY
SESSION PLUGGING
• Sunday – Gold Nuggets in ADF (S32502)3.15-4.15, Moscone West-2000
• Tuesday – Reaching Out from PL/SQL (S08625 )10.15-11.15, Mariott Marquis, Salon 7
• Tuesday – (JavaOne) Cross Tier Push Architecture (Don’t call us, we’ll push you) (S24722)4.30-5.15 PM, Hotel Nikko, Monterey I/II
• Wednesday – Push to the Limit: Rich and Proactive User Interfaces with Oracle ADF (S08620)5-6 PM, Mariott Marquis, Golden Gate A
• Thursday – Instant Agility in Oracle Fusion Middleware through Design Time @ Run Time (S08623)4-5 PM, Moscone West – 2020