DOAG 2008 Konferenz 01. - 03.12.2008 Nürnberg Markus Fiegler ORDIX AG, Paderborn mf@ordix.de www.ordix.de
Agenda SOA und Web-Services im Überblick Datenbank als Web-Services Provider - Alternative mit einem Application Server - Native Web Services (ab Oracle 11g) Datenbank als Web-Services Konsument - UTL_HTTP PL/SQL-Package - Java-Stored-Procedure - UTL_DBWS PL/SQL-Package Resümee Fragen und Antworten 3
SOA Was ist das? SOA ist eine nächste Abstraktionsstufe. SOA ist ein abstraktes Architekturkonzept bzw. Paradigma. Primäres Ziel von SOA ist die Beherrschung der Komplexität. Im Mittelpunkt stehen fachlich getriebene und modulare Services. SOA ist technologie-unabhängig. Mit SOA ist eine flexible Ausrichtung der IT auf die Geschäftsprozesse möglich. 4
SOA Konzeptionelle Infrastruktur Service Registry stellt Servicebeschreibung bereit hinterlegt Servicebeschreibung SOA-Infrastruktur sendet Serviceanfrage sendet Serviceantwort Servicenehmer Servicegeber 5
Web-Services Vorteile + Vollständige Unabhängigkeit von Betriebssystem, Plattform und Programmiersprache + Kommunikation über Internet-Standardprotokolle wie z. B. HTTP, HTTPS, SMTP oder FTP + Entkopplung der Software-Systeme durch Kapselung anwendungsspezifischer Geschäftsobjektsichten in Services + Reduzierung der Abhängigkeiten 6
Web-Services Funktionsweise UDDI Service-Verzeichnis finden/binden WSDL WSDL bekannt machen Service-Konsument SOAP Client XML Daten SOAP (XML) HTTP Datenaustausch Service-Anbieter XML Daten SOAP Server 7
Agenda SOA und Web-Services im Überblick Datenbank als Web-Services Provider - Alternative mit einem Application Server - Native Web Services (ab Oracle 11g) Datenbank als Web-Services Konsument - UTL_HTTP PL/SQL-Package - Java-Stored-Procedure - UTL_DBWS PL/SQL-Package Resümee Fragen und Antworten 8
Datenbank als Web-Services Provider Oracle10gAS WSDL PL/SQL Java XML JDBC SQLJ JPublisher generierte Java Klassen SOAP Web Service Client 9
DB als Webservice-Provider Vorgehensweise JDBC Connection Pool und JDBC DataSource in OC4J anlegen Wrapper-Klassen mit WebServicesAssembler erstellen Das EAR-Archiv auf dem Application Server bereitstellen Bereitgestellte Web Services in OC4J 10g R3 testen 10
Agenda SOA und Web-Services im Überblick Datenbank als Web-Services Provider - Alternative mit einem Application Server - Native Web Services (ab Oracle 11g) Datenbank als Web-Services Konsument - UTL_HTTP PL/SQL-Package - Java-Stored-Procedure - UTL_DBWS PL/SQL-Package Resümee Fragen und Antworten 11
Native Web Services Was ist das? Ab Oracle11g verfügbar Geschäftslogik in der Datenbank mit wenig Aufwand in Serviceorientierten Architekturen wiederverwendbar Kein separater Application Server mehr notwendig Nutzt den XML-DB HTTP-Server 12
XML-DB mit HTTP-Unterstützung 3 Oracle DB Client HTTP über TCP/IP 2 Listener 1 HTTP Protocol Handler Oracle XML DB 13
Native Web Services Architektur Oracle DB Automatische Generierung WSDL PL/SQL SQL XQuery DB WS SOAP (XML) HTTP Web Service Client 14
Native Web Services Vorgehensweise HTTP-Zugang konfigurieren ORAWSV Servlet konfigurieren Benutzerprivilegien vergeben PL/SQL-Objekt anlegen Web Service aufrufen 15
Konfiguration HTTP-Zugang HTTP Portnummer konfigurieren SQL> exec DBMS_XDB.SETHTTPPORT(8080); PL/SQL-Prozedur erfolgreich abgeschlossen. SQL> SELECT DBMS_XDB.GETHTTPPORT FROM DUAL; GETHTTPPORT ----------- 8080 16
Konfiguration ORAWSV Servlet ORAWSV Servlet Konfiguration: - DBMS_XDB.addServlet - DBMS_XDB.addServletSecRole - DBMS_XDB.addServletMapping ORAWSV Servlet Aufruf: - http(s)://host:port/orawsv?wsdl 17
Benutzerprivilegien Datenbank Rollen: - XDB_WEBSERVICES - XDB_WEBSERVICES_OVER_HTTP - XDB_WEBSERVICES_WITH_PUBLIC 18
Web Services URL Syntax: http://host:port/orawsv/<schema>/<proc>?wsdl http://host:port/orawsv/<schema>/<package>/<proc>?wsdl Beispiel http://localhost:8080/orawsv/ora00/mitarbeiter_pck/ P_HOLE_MA?wsdl 19
Web Services WSDL 20
Native Web Services Vorteile + Native Web Services sind in Oracle XML DB integriert + Basierend auf Standards + Niedrige Management-Kosten + Hohe Performance + Vereinfachte Installation (Zero Coding) 21
Agenda SOA und Web-Services im Überblick Datenbank als Web-Services Provider - Alternative mit einem Application Server - Native Web Services (ab Oracle 11g) Datenbank als Web-Services Konsument - UTL_HTTP PL/SQL-Package - Java-Stored-Procedure - UTL_DBWS PL/SQL-Package Resümee Fragen und Antworten 22
Web-Services Call-Out Oracle DB PL/SQL Java SOAP (XML) HTTP Web-Services 23
Agenda SOA und Web-Services im Überblick Datenbank als Web-Services Provider - Alternative mit einem Application Server - Native Web Services (ab Oracle 11g) Datenbank als Web-Services Konsument - UTL_HTTP PL/SQL-Package - Java-Stored-Procedure - UTL_DBWS PL/SQL-Package Resümee Fragen und Antworten 24
SOAP-Nachricht zum Aufruf eines Web Services <env:envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://xmlns.oracle.com/orawsv/ora00/ MITARBEITER_PCK/P_HOLE_MA"> <env:body> <ns:p_hole_mainput> <ns:p_mitarbeiternr-number- IN>1</ns:P_MITARBEITERNR-NUMBER-IN> <ns:p_mitarbeiternname-varchar2-out/> <ns:p_beruf-varchar2-out/> </ns:p_hole_mainput> </env:body> </env:envelope> 25
Alternative UTL_HTTP Was ist zu beachten? Operationen auf dem Datentyp CLOB wie z. B. DBMS_LOB.WRITEAPPEND sollten minimiert werden. Das Parsen von XML-Inhalten und Einfügen in eine Tabelle kann folgendermaßen beschleunigt werden: - Eine Objekt-Tabelle anlegen - Objekt-Tabelle mit XMLTYPE.TOOBJECT füllen - Inhalt der Objekt-Tabelle in eine Tabelle einfügen mit INSERT INTO... SELECT... FROM TABLE(<Objekt-Tabelle>) CACHE Option beim DBMS_LOB.CREATETEMPORARY verwenden NOCOPY Hint beim Aufruf von Subroutinen verwenden 26
Agenda SOA und Web-Services im Überblick Datenbank als Web-Services Provider - Alternative mit einem Application Server - Native Web Services (ab Oracle 11g) Datenbank als Web-Services Konsument - UTL_HTTP PL/SQL-Package - Java-Stored-Procedure - UTL_DBWS PL/SQL-Package Resümee Fragen und Antworten 27
Java-Stored-Procedure DB PL/SQL- Wrapper Java- Stub-Klasse Web-Service 28
Agenda SOA und Web-Services im Überblick Datenbank als Web-Services Provider - Alternative mit einem Application Server - Native Web Services (ab Oracle 11g) Datenbank als Web-Services Konsument - UTL_HTTP PL/SQL-Package - Java-Stored-Procedure - UTL_DBWS PL/SQL-Package Resümee Fragen und Antworten 29
UTL_DBWS PL/SQL-Package UTL_DBWS ist ein Oracle PL/SQL-Package für die Kommunikation mit Web Services. DB UTL_DBWS J-Publisher Web-Service 30
Agenda SOA und Web-Services im Überblick Datenbank als Web-Services Provider - Alternative mit einem Application Server - Native Web Services (ab Oracle 11g) Datenbank als Web-Services Konsument - UTL_HTTP PL/SQL-Package - Java-Stored-Procedure - UTL_DBWS PL/SQL-Package Resümee Fragen und Antworten 31
Resümee PL/SQL-Programme können ohne großen Aufwand als Web-Services zur Verfügung gestellt werden. Soll eine Datenbank als Web-Services Provider fungieren, dann ist die Alternative UTL_HTTP zu empfehlen, da diese den schnellsten Zugriff von einer Oracle DB auf einen externen Web- Service ermöglicht. Soll dagegen eine Datenbank als Web-Services Konsument dienen, dann ist die Alternative mit einem Application Server vorzuziehen, da diese eine bessere Skalierbarkeit ermöglicht. Eine Oracle Datenbank kann in einer SOA sowohl als WS- Anbieter als auch WS-Konsument verwendet werden. 32
Vielen Dank für Ihre Aufmerksamkeit! einfach.gut.beraten. 35