vii Inhaltsverzeichnis 1 Einleitung 1 2 Grundlagen von Webanwendungen 7 2.1 Hypertext Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.1 Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.2 Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.3 Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.4 Cookies und Request-übergreifende Zustandsinformation . . 14 2.1.5 Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.6 Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.7 WebDAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2 Hypertext Transfer Protocol over TLS . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Funktionsumfang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Arbeitsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 23 26 2.3 Auszeichnungssprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.4 Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Grundlagen der Applet-Programmierung . . . . . . . . . . . . . . . 2.4.2 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.3 Applet-Kontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.4 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 29 32 33 34 2.5 Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Grundprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.2 Grundlagen der Servlet-Programmierung . . . . . . . . . . . . . . . 2.5.3 Sitzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.4 Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.5 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 36 38 41 43 44 2.6 JavaServer Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.1 Grundprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.2 Elemente von JavaServer Pages . . . . . . . . . . . . . . . . . . . . . . . 2.6.3 Tag-Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.4 Darstellung als XML-Dokument . . . . . . . . . . . . . . . . . . . . . 46 46 46 52 54 2.7 Java 2 Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.7.1 Arten von Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.7.2 J2EE-Pakete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 viii Inhaltsverzeichnis 2.8 Architektur von Webanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.2 EIS-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.3 EJB-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.4 Webclient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.5 Business-to-Business . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 60 61 63 64 69 3 JDBC – Die Datenbankschnittstelle für Java-Programme 71 3.1 Das Grundprinzip von JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.2 Ein einführendes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.3 Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.4 Ausführung von SQL-Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Parameterlose SQL-Operationen (Klasse Statement) . . . . . . 3.4.2 Vorübersetzte und parametrisierte Anweisungen . . . . . . . . . 3.4.3 Aufruf von gespeicherten Programmen . . . . . . . . . . . . . . . . 3.4.4 Escape-Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.5 Spezielle Methoden der Statement-Klassen . . . . . . . . . . . . . 3.4.6 Oracle-spezifische Basisklassen . . . . . . . . . . . . . . . . . . . . . . 3.5 Ergebnismengen, Datentypen und get/set-Methoden . . . . . . . . . . . . 89 3.5.1 Erweiterungen von ResultSet . . . . . . . . . . . . . . . . . . . . . . . . 89 3.5.2 RowSets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 3.5.3 Standarddatentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.5.4 Belegung von PL/SQL-Tabellen . . . . . . . . . . . . . . . . . . . . . 108 3.5.5 Datentyp ROWID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 3.5.6 REF CURSOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.5.7 Objekttypen (Struct) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.5.8 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 3.5.9 Referenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 3.6 Benutzerdefinierte Java/SQL-Abbildung zur Objektbehandlung . . . 3.6.1 Standardkonforme Java/SQL-Abbildung . . . . . . . . . . . . . 3.6.2 Oracle-spezifische Java/SQL-Abbildung . . . . . . . . . . . . . . 3.6.3 Serialisierung von Objekten als RAW- oder BLOB-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.4 SQLJ-Objekttypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 117 120 3.7 Aufbau von Datenbankverbindungen . . . . . . . . . . . . . . . . . . . . . . . 3.7.1 Treiberregistrierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.2 Verbindungsaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.3 Data Sources und JNDI-Namensdienst . . . . . . . . . . . . . . . 3.7.4 Connection Pooling und Caching . . . . . . . . . . . . . . . . . . . 3.7.5 Connection Pooling mit dem OCI-Treiber . . . . . . . . . . . . . 3.7.6 Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 128 129 130 133 136 140 3.8 Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.1 Transaktionssteuerung über die Connection-Klasse . . . . . . 3.8.2 Verteilte Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8.3 Java Transaction API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 140 143 149 82 83 84 85 87 88 89 126 127 Inhaltsverzeichnis 3.9 3.10 Zugriff auf Metadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1 Information über Tabellen und Sichten mit DatabaseMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.2 Information zu Anfrageergebnissen mit ResultSetMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.3 Schemainformation zu benutzerdefinierten Objekttypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.4 Ermittlung der Treiberversion . . . . . . . . . . . . . . . . . . . . . . 152 154 155 Abweichungen vom JDBC2-Standard . . . . . . . . . . . . . . . . . . . . . . . 3.10.1 Spezielle Oracle-Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10.2 Ausführungsgruppierung (»Batch Update«) . . . . . . . . . . . . 3.10.3 Array-Fetches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10.4 Vordefinition von Spalten . . . . . . . . . . . . . . . . . . . . . . . . . 3.10.5 Caching von Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10.6 Properties-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10.7 Nicht unterstützte JDBC2-Konzepte . . . . . . . . . . . . . . . . . . 156 156 156 159 160 161 162 163 152 153 3.11 Maßnahmen zur Performanzverbesserung . . . . . . . . . . . . . . . . . . . 163 3.12 Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12.2 Oracle-Connection-Manager . . . . . . . . . . . . . . . . . . . . . . . 3.12.3 Firewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.13 Serverseitige Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 4 SQLJ – SQL-Einbettung in Java 4.1 Unterschiede zu JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 4.2 Grundprinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 4.3 Eingebettetes SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Hostvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Allgemeine SQLJ-Anweisungen . . . . . . . . . . . . . . . . . . . . . 4.3.3 Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.4 SELECT-INTO-Szenario . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.5 Nullwertbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.6 Iteratoren zur Abarbeitung von Anfrageergebnissen . . . . . . 4.3.7 Ausnahmebehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.9 Ausführungsreihenfolge . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 174 176 177 178 179 179 184 185 4.4 Handhabung von Datenbankverbindungen . . . . . . . . . . . . . . . . . . . 4.4.1 Registrierung einer Treiberklasse . . . . . . . . . . . . . . . . . . . . 4.4.2 Kontexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.3 Verbindungskontexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.4 Ausführungskontexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.5 Unterstützung von JNDI-DataSources . . . . . . . . . . . . . . . . 186 186 186 187 192 195 4.5 Objekte und Kollektionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.1 Schwach getypte Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.2 Stark getypte Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.3 Geschachtelte Iteratoren für geschachtelte Tabellen . . . . . . 195 196 197 198 165 165 165 166 169 ix x Inhaltsverzeichnis 4.6 JPublisher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1 Aufruf von JPublisher . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2 Namensgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.3 Beeinflussung der Implementierung . . . . . . . . . . . . . . . . . . 4.6.4 Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.5 Weitere Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.6 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 200 203 206 207 209 209 4.7 SQLJ-Präcompiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.1 Ablauf des gesamten Übersetzungsvorgangs . . . . . . . . . . . 4.7.2 Präcompiler-Aufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.3 Angabe von Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.4 Ausgabeverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.5 Semantische Prüfungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.6 Oracle-spezifische Codegenerierung . . . . . . . . . . . . . . . . . . 4.7.7 Steuerung der Präkompilierung und Kompilierung . . . . . . 4.7.8 Produktspezifische Anpassung . . . . . . . . . . . . . . . . . . . . . . 4.7.9 Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.10 Präcompiler-Meldungen . . . . . . . . . . . . . . . . . . . . . . . . . . 210 210 213 214 215 215 217 218 220 221 222 4.8 SQLJ-Erweiterungen von Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . 223 4.8.1 Oracle-spezifische Datentypen . . . . . . . . . . . . . . . . . . . . . . 223 4.8.2 Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 4.9 SQLJ in Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 4.10 Interoperabilität von SQLJ mit JDBC und PL/SQL . . . . . . . . . . . . . 226 4.10.1 Interoperabilität mit JDBC . . . . . . . . . . . . . . . . . . . . . . . . 226 4.10.2 Interoperabilität mit PL/SQL . . . . . . . . . . . . . . . . . . . . . . . 227 4.11 Dynamisches SQL in SQLJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 5 Java-Programme im Datenbankserver 5.1 Oracle JVM: Oracles Java Virtual Machine . . . . . . . . . . . . . . . . . . 230 5.2 Gespeicherte Programme in Java – Ein Beispiel . . . . . . . . . . . . . . . 231 5.3 Implementierung in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 5.4 Laden in die Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 5.5 Registrierung (Publishing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 5.6 Aufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 6 Datenbankunterstützung für XML 259 6.1 Einführung in XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Grundbegriffe von XML . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Konzepte von XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3 Document Type Definition . . . . . . . . . . . . . . . . . . . . . . . . 6.1.4 XML Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.5 XML-Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.6 XPath-Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.7 XSL-Stylesheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 260 262 264 266 266 271 275 6.2 XML-Unterstützung in Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 229 Inhaltsverzeichnis 6.3 Grobgranulare Speicherung von XML-Dokumenten . . . . . . . . . . . . 6.3.1 Die CONTAINS-Funktion von OracleText . . . . . . . . . . . . 6.3.2 Indextypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.3 XML-Funktionalität in OracleText . . . . . . . . . . . . . . . . . . 288 288 294 302 6.4 Der Objekttyp SYS.XMLType . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Methoden des Objekttyps XMLType . . . . . . . . . . . . . . . . . 6.4.2 Erzeugen von XMLType-Objekten . . . . . . . . . . . . . . . . . . . 6.4.3 Qualifikation und Extraktion . . . . . . . . . . . . . . . . . . . . . . 6.4.4 Modifikation von XML-Dokumenten . . . . . . . . . . . . . . . . 6.4.5 SQL-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.6 Java-Zugang zu XMLType-Objekten . . . . . . . . . . . . . . . . . 310 311 312 313 315 316 316 6.5 Feingranulare Behandlung von XML-Dokumenten mit dem XML SQL Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5.1 Kanonische Abbildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5.2 Lesen mit der Java-Klasse OracleXMLQuery . . . . . . . . . . . 6.5.3 Feingranulares Speichern mit Java OracleXMLSave . . . . . . 6.5.4 Ausführung über Kommandozeile . . . . . . . . . . . . . . . . . . . 317 318 321 324 325 6.6 Erzeugen von XML aus Datenbankdaten in SQL . . . . . . . . . . . . . . 6.6.1 PL/SQL-Paket DBMS_XMLGEN . . . . . . . . . . . . . . . . . . . . 6.6.2 Die SQL-Funktion SYS_XMLGEN . . . . . . . . . . . . . . . . . . 6.6.3 Die SQL-Funktion SYS_XMLAGG . . . . . . . . . . . . . . . . . . 6.6.4 SQLX-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 327 330 333 334 6.7 Das XSQL-Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.1 Das Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.2 Ändern von XML-Dokumenten in der Datenbank . . . . . . . 6.7.3 Parametrisierte Aktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.4 Fehlerausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.5 Benutzerdefinierte Action Handler . . . . . . . . . . . . . . . . . . . 6.7.6 Stylesheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.7 Aufrufmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.8 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 339 341 343 346 347 348 349 350 6.8 URI-Unterstützung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8.1 URI auf Datenbankdaten . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8.2 Der URIType-Objekttyp . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8.3 Registrierung eigener Protokolle . . . . . . . . . . . . . . . . . . . . . 6.8.4 Erzeugen von DBUri-Referenzen mit der SQL-Funktion SYS_DBURIGEN . . . . . . . . . . . . . . . . . . . . 6.8.5 Aufruf über einen Webbrowser . . . . . . . . . . . . . . . . . . . . . 350 351 353 354 Oracle XML/DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9.1 XML/DB-Speicherungsformen . . . . . . . . . . . . . . . . . . . . . . 6.9.2 Erstellung eines XML-Schemas mit/ohne Abbildungsbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9.3 Registrierung eines XML-Schemas . . . . . . . . . . . . . . . . . . . 6.9.4 Generierung eines XML-Schemas . . . . . . . . . . . . . . . . . . . . 6.9.5 Anlegen von Tabellen mit XMLType . . . . . . . . . . . . . . . . . 6.9.6 Bearbeitung von XMLType-Tabellen . . . . . . . . . . . . . . . . . 6.9.7 APIs für Oracle XML/DB . . . . . . . . . . . . . . . . . . . . . . . . . . 357 358 6.9 355 357 361 365 367 368 370 377 xi xii Inhaltsverzeichnis 6.9.8 6.9.9 6.10 XMLType-Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Systemsichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 XML/DB-Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10.1 WebDAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10.2 ACL-Zugriffskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10.3 DBMS_XDB-PL/SQL-Paket zur Administration des Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10.4 Repository-Sichten zur Manipulation der Dokumente . . . . 6.10.5 JNDI-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10.6 Pfadbasierter Zugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10.7 Versionierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 381 382 384 385 387 388 389 7 Der Oracle9i Application Server 391 7.1 Überblick über den Oracle9i Application Server . . . . . . . . . . . . . . . 7.1.1 J2EE and Web Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2 Portal and Wireless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.3 Business Intelligence and Forms . . . . . . . . . . . . . . . . . . . . . 7.1.4 Unified Messaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.5 Infrastruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.6 Eine Beispielinstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.7 Architektur für Skalierbarkeit und Verfügbarkeit . . . . . . . 392 393 394 394 395 395 396 396 7.2 Oracle HTTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1 Architektur des Webservers . . . . . . . . . . . . . . . . . . . . . . . . 7.2.2 Zugriffskontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.3 Dynamische Generierung von Inhalten . . . . . . . . . . . . . . . 7.2.4 Manipulieren der URL des HTTP-Requests . . . . . . . . . . . . 7.2.5 Beeinflussen der Kopfzeilen der HTTP-Response . . . . . . . . 7.2.6 HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.7 WebDAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.8 Administrative Funktionen . . . . . . . . . . . . . . . . . . . . . . . . 7.2.9 Diverse Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 399 402 405 410 414 416 416 417 420 7.3 Oracle9iAS Web Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 7.3.1 Grundlegendes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 7.3.2 Edge Side Includes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 7.4 Oracle9iAS Containers for J2EE . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.1 Das EJB-Komponentenmodell . . . . . . . . . . . . . . . . . . . . . . 7.4.2 Entity- und Session-Beans . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.3 Implementierung von Session-Beans . . . . . . . . . . . . . . . . . 7.4.4 Implementierung von Entity-Beans . . . . . . . . . . . . . . . . . . 7.4.5 Bean-gesteuerte Persistenz . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.6 Container-gesteuerte Persistenz . . . . . . . . . . . . . . . . . . . . . 7.4.7 Transaktionssteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.8 Spezielle Aspekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.9 Hinweise zur Verwendung von Enterprise JavaBeans . . . . 428 428 429 430 441 443 450 455 458 459 Inhaltsverzeichnis 7.5 Tag-Libraries für Oracle9iAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.1 JSP Markup Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.2 Die SQL-Tag-Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.3 Die XML-Tag-Libary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.4 Allgemeine Utility-Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.5 E-Mail-Versand in JSP-Seiten . . . . . . . . . . . . . . . . . . . . . . . 7.5.6 Die Tag-Library für Dateitransfers . . . . . . . . . . . . . . . . . . . 7.5.7 Die EJB-Tag-Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.8 Der Web Object Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5.9 Tag-Bibliotheken anderer Oracle9i-Produkte . . . . . . . . . . . 464 464 467 472 475 476 478 480 482 488 7.6 Oracle9iAS Single Sign-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.1 Überblick über Oracle9iAS Single Sign-On . . . . . . . . . . . . . 7.6.2 Arbeitsweise bei Partnerapplikationen . . . . . . . . . . . . . . . . 7.6.3 Programmierung einer Partnerapplikation in Java . . . . . . . 7.6.4 Der Oracle HTTP Server als Partnerapplikation . . . . . . . . . 7.6.5 Single Sign-On bei externen Applikationen . . . . . . . . . . . . 489 489 490 493 498 499 A Objektrelationale Modellierung 501 Literatur 505 Stichwortverzeichnis 513 xiii