• Keine Ergebnisse gefunden

Architektur von Web- Datenbanksystemen

N/A
N/A
Protected

Academic year: 2022

Aktie "Architektur von Web- Datenbanksystemen"

Copied!
69
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Architektur von Web-

Datenbanksystemen

(2)

2

Schichtenarchitektur

Aufteilung einer Web-DB-Anwendung in verschiedene Schichten

Logische Schichten vs. physische Schichten

Physisch:

Aufteilung der Anwendung auf Client, DB-Server und Middleware

Middleware: ein Webserver oder mehrere Application Server

Logisch:

Einordung in einzelne Schichten hinsichtlich der Aufgabenverteilung

Gängiges Modell: 3-Schichten-Architektur

(3)

3

3-Schichten-Architektur

Präsentationsschicht

Visualisierung der Dokumente auf Anwenderseite

Keine Anwendungslogik zur Erstellung der Seiten (thin clients)

Client = Rechner mit Browser einschl. PlugIns

Anwendungslogikschicht

Weiterleitung von Anfragen des Client an den entsprechenden Dienst, Datenbankanfragen, Erstellung dynamischer Seiten und Zurücksendung an den Client

Weitere Aufgaben:

Verwaltung von Transaktionen

Lastverteilung der Anfragen

Sicherheitsaufgaben

Datenhaltungsschicht

Speicherung der Daten + Datenzugriff

Typischerweise Datebanksystem (auch Dateien möglich)

(4)

4

3- und 4-Schichtenarchitekturen

(5)

5

Klassifikation von Web-

Informationssystemen (WebIS)

unterschiedliche Komplexitätsgrade

Anwendungsgebiet bestimmt Architektur

in komplexen WebIS mehrere Architektur- varianten gleichzeitig vorhanden

Varianten:

1. Statische WebIS

2. WebIS mit DB-Unterstützung

3. Applikationsorientierte WebIS

4. Ubiquitäre WebIS

5. Portal-orientierte WebIS

(6)

6

Statische WebIS

Dokumente in statischer Form auf Webserver abgelegt

Basis: HTTP-Protokoll: Web-Client <-> Web-Server

einfache Interaktivität (CGI, HTML-Formulare)

Vermischung von Präsentation, Inhalt und Hypertext

manuelle Pflege, Gefahr von Inkonsistenzen

(7)

7

Statische WebIS: Bewertung

Vorteile

Einfachheit und Stabilität

niedrige Antwortzeiten

Einsatzgebiet

geringe Anzahl von Webseiten

niedrige Änderungsfrequenz

Heterogenität der Webseiten hinsichtlich Hypertextstruktur und Präsentation

(8)

8

WebIS mit DB-Unterstützung

Vorteile

vereinfachte Aktualisierung der Webseiten

hoher Grad an Interaktivität

strukturierte Suche auf Basis von DB-Anfragen

dezentrale Aktualisierung des Datenbestandes

Nachteile

Verwaltung der Abbildungsvorschriften für Zusammenstellung der Webseite erforderlich Web-Client Web-Server

DBS-Server

Präsentation Inhalt

(9)

9

WebIS mit DB-Unterstützung (Forts.)

Motivation (Einsatzgebiet z.B. Produktkatalog):

große Anzahl von Webseiten

hohe Änderungsfrequenz

Homogenität der Webseiten hinsichtlich Hypertext- struktur und Präsentation

Nutzung existierender (Legacy)Datenbestände

Weiterführung

Integration heterogener verteilter Daten

strukturierte Daten (Datenbanken)

unstrukturierte Daten (Textdokumente)

semistrukturierte Daten (HTML-Dateien)

(10)

10

Applikationsorientierte WebIS

Funktionalität des Applikations-Servers

DB-Anbindung

Transaktionsmanagement

Sicherheit

Lastausgleich

Caching

Web-Client Web-Server

DBS-Server

Präsentation

Applikationslogik Applikations-

Server

Inhalt IIOP

(11)

11

Applikationsorientierte WebIS (Forts.)

Produkte

kombinierte Web-/Applikationsserver: Coldfusion, Netscape Application Server, Oracle Internet Application Server

Enterprise-Application-Server: WebSphere (IBM), WebLogic (Bea Systems)

Motivation

hohe zu erwartende Server-Last, bei großer Anzahl gleich- zeitig zugreifender Clients

komplexe Geschäftslogik, z.B. bei Online-Kauf oder Online- Buchung)

hohe Transaktionsorientiertheit, z.B. bei Online-Banking- Anwendungen

(12)

12

Ubiquitäre WebIS

Ziel

richtigen Dienst

zum richtigen Zeitpunkt

am richtigen Ort

in der richtigen Form

anbieten

Web-Client Web-Server

DBS-Server

Präsentation

Applikationslogik Applikations-

Server

Inhalt Anpassungs- komponente

(13)

13

Ubiquitäre WebIS (Forts.)

Produkte

Oracle Wireless Application Server

WebSphere Transcoding Publisher (IBM)

Motivation

Zugriff auf die im WebIS präsentierte Information nicht nur über WWW, sondern z.B. auch über mobile Endgeräte

Anpassung der Inhalte und/oder der Präsentationsaspekte an Benutzerprofile (Personalisierung)

Realisierung lokations/zeitabhängiger Dienste, wie z.B.

lokationssensitiver Museumsführer

(14)

14

Portal-orientierte WebIS

Web-Client Web-Server

Daten 1

Präsentation Aggregation

Inhalt

Applikationslogik Portlet 1

Web Service 1

Portlet 2 Web Service 2

Portlet 3 Web Service 3

Daten 2 Daten 3

Architektur eines portal-orientierten WebIS

(15)

15

Portalorientiertes WebIS (Forts.)

Große Anwendungen mit vielen Diensten  erfordert portalorientierte Architektur

Portal = zentraler Zugang zu einem

Anwendungssystem, welches verschiedene Dienste und Anwendungen integriert und z.B. Funktionen zur Suche oder Personalisierung bereitstellt

Portlets = Teile von Dokumenten aus unterschiedlichen Quellen

Zusammensetzen von Portlets zu ganzen Seiten, die über Web-Server an den Client verschickt werden

Einsatz von Web Service-Technologien, die den Aufruf von Diensten über definierte Schnittstellen ermöglichen

Vorteil hohe Flexibilität bei der Verwendung der Portlets

(16)

16

HTTP-Protokoll

Hypertext Transfer Protokoll (HTTP) für Kommunikation zwischen Web-Server und Client

Funktionsweise: Request-Response-Prinzip

HTTP-Request: URL

HTTP-Response: gewünschte Dokument

Verbindungs- und statusloses Protokoll: keine dauerhafte

Verbindung, keine Speicherung des Zustands zwischen Client und Server

Methoden zur Anforderung eines Dokuments

GET: Client fordert die angegebene URL an, wobei eventuelle Parameter im String der URL mitgegeben werden

POST: Client schickt Daten an den Server, wobei diese nicht in der URL sondern direkt im Header der Anforderung übergeben werden

HEAD, PUT, DELETE: keine Bedeutung für die Entwicklung von Webapplikationen

(17)

17

HTTP Request

1. Zeile: Methode, Ressource, Version des HTTP- Protokolls

GET http://www.test.de/index.html HTTP/1.0

Mehre Message Header, die zusätzliche Informationen übertragen

Accept: MIME-Typen, die der Client verarbeiten kann

Host: Domainname des Webservers

Referer: URL der Herkunftsressource

User-Agent: Name und Version des Clientbrowsers

Authorization: Benutzername und Paßwort des Clients, Authorization Header als Reaktion auf WWW-Authenticate-

Header des Servers zum Zugriff auf das gewünschte Dokument

Bei Methode POST: Anhängen von Daten (aus Formular) an die Headerinformationen, z.B.

Eingabe1=Strasse&Eingabe2=54455

(18)

18

HTTP Response

Status

Version des verwendeten HTTP-Protokolls

Statuscode

textuelle Beschreibung des Status Beispiel:

Optionale Response-Header

Server: Name und Version des Webservers

WWW-Authenticate: Verlangt vom Client eine Authentifizierung und gibt u.a. das Authentifizierungsschema an

Location: URL der Ressource

Eigentliches Dokument (falls eines zurückgeliefert werden soll)

<HTML>

<HEAD>

<TITLE>Titelzeile</TITLE>

</HEAD>

<BODY> …

(19)

19

Anbindungsarchitekturen

(20)

20

Anbindungsarchitekturen - Varianten

1. Anwendung mit statischen Seiten: Datenbankinhalte manuell einarbeiten, keine Kommunikation mit der Datenbank

2. Realisierung der Webanwendung als CGI-Programm: Datenbankzugriff vom Programm. Die fertige HTML-Seite wird zum Client übertragen.

3. Applets werden zum Client übertragen und dort ausgeführt. Die

Kommunikation mit der DB findet dabei direkt mit dem Client statt, z.B.

über JDBC (nicht HTTP!)

4. Server-APIs: serverseitige Erweiterungen für den Zugriff auf die Datenbank und den Aufbau der HTML-Datei.

5. Einsatz von Servlets in der Serverumgebung, erfordert spezielle Servlet Engine und eine Java Virtual Machine (JVM). DB-Zugriff erfolgt z. B. über die JDBC-API oder direkt, wenn Servlet Engine im Datenbankserver

integriert ist.

6. Auslagerung komplexer Programmlogik auf einen Applikationsserver.

Dieser realisiert auch die Verbindung zur Datenbank, wobei DB-

Verbindungen zur Performance-Verbesserung zwischengespeichert werden.

7. Erstellung der HTML-Dateien über einen Präprozessor: Verarbeitung von XML- und XSL-Dateien (siehe auch Vorlesung XML-Datenbanken / 7.

Semester)

(21)

21

Anbindungstechnologien

(22)

22

Anforderungen an eine DB-Server- Anbindung

Integrierte Benutzerschnittstelle

Verschiedene Medientypen

Browser-Darstellung, keine proprietären Formate

Interaktivität

erfordert zustandswahrende Verbindung

Konsistenz und Datenintegrität

Performance

Sicherheit

Programme, die von Web-Server geladen werden

Skalierbarkeit

Offenheit

Konflikt mit Performance (Java vs. Microsoft)

(23)

23

Client-Seitige DB-Anbindungen

Prinzip:

Übertragung von Java Applets (plattformunabhängiger Bytecode) vom Web-Server zum Client

Direkte Verbindung zum Datenbank-Server über JDBC

Ausführung der Clients durch eine Java Virtual Machine (JVM)

Web-Client Web-Server

DBS-Server JVM

Applet JDBC

(24)

24

Serverseitige DB-Anbindung

Generierung von HTML-Seiten im Server und Zurücksenden an den Client

Daten aus der Datenbank können in HTML-Dokument enthalten sein

2 Ansätze (je nach Generierungsmethode)

Externe Programme: erzeugen den HTML-Code des Dokuments (HTML-Generierende Anwendungen)

Erweiterung der Serverfunktionalität: Anreicherung des HTML- Codes um spezifische Funktionalitäten zum Einfügen von

dynamischem Inhalt ins Dokument (HTML-Erweiterungen)

(25)

25

Serverseitige Anbindung:

Externe Programme

(26)

26

Serverseitige Anbindung:

Erweiterung der Serverfunktionalität

(27)

27

Serverseitige Anbindung

Dokumente können nur die Darstellungsmöglichkeiten von HTML nutzen

Überprüfung von Benutzereingaben durch clientseitige Skriptsprache (Java Script) oder nach Senden der Anfrage

Anzeige der Seiten auf beliebigem Browser, keine

zusätzliche Installation von Programmen auf Clientseite erforderlich

DB-Verbindung wird nur von Seiten des Web- oder

Applikationsservers aufgebaut, keine Verbindung von der Clientseite über das zustandslose HTTP-Protokoll

mehrschrittige Anfragen eines Clients an die DB nur über Umwege realisierbar

(28)

28

Serverseitige Technologien im Überblick

CGI (am Beispiel Perl)

Web-Server API

Server Side Include (SSI)

Active Server Page (ASP)

PL/SQL und PL/SQL Server Page (PSP)

PHP

Übergreifende Technologien

Java Database Connectivity (JDBC)

SQLJ

Java und J2EE (Enterprise Java Beans)

Java Servlet

Java Server Page (JSP)

(29)

29

Common Gateway Interface (CGI)

Keine Programmiersprache

Kann mit allen Sprachen realisiert werden, die Zugriff auf Umgebungsvariable sowie die Standardein- und ausgabe erlauben (z.B. Perl, C, C++)

Standardisierte Schnittstelle für die Kommunikation zwischen Web-Server und externen Programmen (Übergabe von Daten von HTML-Seiten an

Programme)

Aufbau

Verschiedene Umgebungsvariablen für die Datenübertragung Web-Server  CGI-Programm

Variablen mit festem Namen bei jeder Client-Anfrage neu

initialisiert und vom CGI-Programm für die HTML-Generierung nutzbar

(30)

30

Umgebungs-

variablen einer

CGI-Anwendung

(31)

31

Allgemeiner Ablauf der

Programmausführung bei CGI

Allgemeines Prinzip:

Client (Anwender) Server-Rechner

HTML-Datei

mit Formular Daten-

bank WWW-

Server automatisch

erzeugte

HTML-Datei

CGI- Skript

automatisch erzeugte

HTML-Datei 1. Formular

abschicken übertragen

2. CGI-Skript aufrufen

5. HTML-Datei übertragen

3. DB abfragen

Abfrage-Report der DB auswerten

4. HTML-Datei aus Abfrage-Report erzeugen

(32)

32

Ablauf der Verarbeitung bei Ablauf

eines CGI-Programms

(33)

33

CGI Bewertung

Vorteile:

Unterstützung durch alle Web-Server

anforderungsspezifisch programmiert

schnell und flexibel

Nachteile:

Pro Interaktion Start eines CGI-Prozesses / Aufbau einer DB- Verbindung (Verbesserung FastCGI)

Kein Transaktionskonzept zwischen Client und WWW-Server, Problem der Realisierung von Zuständen

Logische Formular-Eingabefehler erst im CGI-Programm erkannt

Sicherheit (da Zugriff auf Betriebssystem-Ressourcen des Web- Servers)

Aufwendige Programmerstellung

Formatierung des Dokuments problematisch, da generiert

(34)

34

Active Server Pages (ASP)

HTML Dokument mit eingebetteten Anweisungen in VBScript oder JScript

ASP Bestandteil des Internet Information Server

große Funktionalität durch Mächtigkeit der Skript- Sprachen (aber geringer als Java/C++)

Einbettung von SQL in Skriptsprache (DB-Zugriff über ODBC und ADOs)

Session Management mit Hilfe von Session-IDs (von Cookies übertragen)

Zugriff auf Formular- und Umgebungsvariablen

(35)

35

Ablauf der Verarbeitung mit PL/SQL

Entwicklungsunterstützung durch WebServer Developer‘s Toolkit (Menge von Packages)

HTP (HyperText Procedures) HTF (HyperText Functions)

erleichtern die Generierung von HTML-Tags aus PL/SQL heraus

OWA_UTIL

Dienstfunktionen für eine bequemere Generierung von HTML-Output

(36)

36

Toolkit - Beispiele

htp.title(‘My First Page Title‘);

htp.title(‘My First Page Title‘);

PL/SQL

HTML <TITLE>My First Page Title</TITLE><TITLE>My First Page Title</TITLE>

Funktionsauruf title:=htf.title(‘My First Page Title‘)title:=htf.title(‘My First Page Title‘)

Verschachtelung

htp.center(htf.header(1,‘My First HTML Header - Level 1‘));

htp.center(htf.header(1,‘My First HTML Header - Level 1‘));

<CENTER<<H1>My First HTML Header - Level 1</H1></CENTER>

<CENTER<<H1>My First HTML Header - Level 1</H1></CENTER>

(37)

37

Toolkit - Überblick

1. Print-Prozeduren

2. Struktur-Tags

3. Head-Related Tags

4. Body Tags

5. List Tags

6. Character Format Tags

7. Form Tags

8. Table Tags

9. OWA_UTIL Package

(38)

38

Beispiel: Web Server Developer Kit

CREATE OR REPLACE PROCEDURE home_page AS BEGIN

htp.htmlOpen;

htp.headOpen;

htp.title(‘My home page‘);

htp.headClose;

htp.bodyOpen;

htp.print (‘This is the home page of ‘|| user ||‘

generated on ‘ || sysdate || ‘.‘);

htp.bodyClose;

htp.htmlClose;

END;

CREATE OR REPLACE PROCEDURE home_page AS BEGIN

htp.htmlOpen;

htp.headOpen;

htp.title(‘My home page‘);

htp.headClose;

htp.bodyOpen;

htp.print (‘This is the home page of ‘|| user ||‘

generated on ‘ || sysdate || ‘.‘);

htp.bodyClose;

htp.htmlClose;

END;

(39)

39

PL/SQL Server Pages (PSP) Grundidee

Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz von PL/SQL-Anweisungen

Server-Side Scripting (Generierung der Seiten im DB-Server - nicht im Webserver)

Basiert auf PL/SQL Web Toolkit

Bestandteil von Oracle Application Server (OAS) und Oracle WebDB

Einbindung dynamischer Inhalte durch PL/SQL- Skripte, durch spezielle Tags gekennzeichnet

(40)

40

PSP Beispiel

<%@ page language="PL/SQL" %>

<%@ plsql procedure="psp_bspseite" %>

<%@ plsql parameter="p_name" default="null"%>

<HTML>

<HEAD>

<TITLE>Beispielseite mit PL/SQL Server Page</TITLE>

</HEAD>

<BODY>

<H1>Beispielseite mit PL/SQL Server Page</H1>

<%

-- Inhalt des Parameters p_name anzeigen, wenn belegt if not(p_name is null) then %>

Hallo <%=p_name%>.

<p>

Client-IP-Adresse: <%=owa_util.get_cgi_env('REMOTE_ADDR')%>

<%END if;%>

<FORM method=POST>

Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30">

</FORM>

</BODY>

</HTML>

<%@ page language="PL/SQL" %>

<%@ plsql procedure="psp_bspseite" %>

<%@ plsql parameter="p_name" default="null"%>

<HTML>

<HEAD>

<TITLE>Beispielseite mit PL/SQL Server Page</TITLE>

</HEAD>

<BODY>

<H1>Beispielseite mit PL/SQL Server Page</H1>

<%

-- Inhalt des Parameters p_name anzeigen, wenn belegt if not(p_name is null) then %>

Hallo <%=p_name%>.

<p>

Client-IP-Adresse: <%=owa_util.get_cgi_env('REMOTE_ADDR')%>

<%END if;%>

<FORM method=POST>

Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30">

</FORM>

</BODY>

</HTML>

(41)

41

Schrittfolge PSP

Kompilieren der PSP-Datei mittels loadpsp

Erzeugen einer gespeicherten Prozedur in der Datenbank (Procedure-Tag)

HTML-Anweisungen werden unter Verwendung des PL/SQL Web-Toolkits in Print-Anweisungen des HTTP- Pakets umgewandelt

PL/SQL-Anweisungen der Skripteinschübe werden unverändert übernommen

Komfortablere Entwicklung, da automatische Übersetzung

(42)

42

PSP Beispiel – Generierter PL/SQL Code (Gespeicherte Prozedur)

( p_name IN VARCHAR2 default null) AS BEGIN NULL;

htp.prn(‘

<HTML>

<HEAD>

<TITLE>Beispielseite mit PL/SQL Server Page</TITLE>

</HEAD>

<BODY>

<H1>Beispielseite mit PL/SQL Server Page</H1>

‘);

-- Inhalt des Parameters p_name anzeigen, wenn belegt if not(p_name is null) then

htp.prn(‘

Hallo ‘);

htp.prn(p_name);

[. . .]

( p_name IN VARCHAR2 default null) AS BEGIN NULL;

htp.prn(‘

<HTML>

<HEAD>

<TITLE>Beispielseite mit PL/SQL Server Page</TITLE>

</HEAD>

<BODY>

<H1>Beispielseite mit PL/SQL Server Page</H1>

‘);

-- Inhalt des Parameters p_name anzeigen, wenn belegt if not(p_name is null) then

htp.prn(‘

Hallo ‘);

htp.prn(p_name);

[. . .]

(43)

43

Verarbeitung einer PSP

1. Weiterleiten der Anfrage vom Browser an den Modul

mod_plsql

2. Verbindung zur Datenbank, Ausführung der gespeicherten Prozedur

3. Erzeugung einer HTML-Seite durch Prozedur

4. Zurücksenden des HTML- Dokuments an mod_plsql

5. Zurücksenden der HTML-Seite als HTTP-Response zum

anfragenden Client

(44)

44

Vorteile von PSP

Trennung von Anwendungs- und Präsentationslogik

HTML-Anweisungen und PL/SQL Code separat

Abgrenzung durch PL/SQL-spezifische Tags

Leichte Erlernbarkeit

Einfacher Zugriff auf Daten der Datenbank

Kein Umweg über HTTP oder JDBC

Ausführung im Server (PSP selbst in der DB)

Verbindung mit anderen Skriptsprachen möglich

z.B. Javascript oder Visual Basic-Script (zur Prüfung von Benutzereingaben)

nicht kombinierbar mit anderen serverseitigen Scripting- techniken

(45)

45

Nachteile von PSP

Stärkere Beanspruchung des DB-Servers

Statische Seiten besser im Web-Server speichern

Plattformabhängigkeit

Beschränkt auf Oracle

Migration auf andere DB erfordert Neuentwicklung der Anwendung

(46)

46

PHP

PHP = Personal Homepage Tools (war ursprünglich eine Sammlung von Tools und Makros)

entwickelt von Rasmus Lerdorf 1994, Open Source Produkt

serverseitige, in HTML eingebettete Script-Sprache (Ausführung auf dem Webserver)

plattformunabhängig

unterstützt umfangreiche Menge von Oracle-

Funktionen (erfordert Installation im Web-Server)

verwandt mit

Active Server Pages (ASP) von Microsoft

Java Server Pages (JSP)

PL/SQL Server Pages (PSP) von Oracle

(47)

47

PHP

PHP-Seite als Script-Datei

Extension .php

Verarbeitung durch PHP-Prozessor

Einbettung von Skripteinschüben in spezielle Tags

<? echo “Hello world!“ ?>

<?php echo “Hello world!“; ?>

<script language=“php“>

echo “Hello world!“;

</script>

(48)

48

Verarbeitung einer PHP-Seite

(49)

49

PHP Beispiel

<HTML>

<HEAD>

<TITLE>Testseite mit PHP</TITLE>

</HEAD>

<BODY>

<H1>Testseite mit PHP</H1>

<?php

// Lesen des per HTTP-Post übertragenen Parameters aus Array

$p_name = $_POST['p_name'];

if ($p_name) {

// Namen ausgeben, wenn eingegeben.

print("Hallo $p_name.<p>");

// Zugriff auf Umgebungsvariable

print("Client-IP-Adresse: ".$_SERVER['REMOTE_ADDR']);

}

</script>

<FORM method="POST">

Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30">

</FORM>

</BODY>

</HTML>

<HTML>

<HEAD>

<TITLE>Testseite mit PHP</TITLE>

</HEAD>

<BODY>

<H1>Testseite mit PHP</H1>

<?php

// Lesen des per HTTP-Post übertragenen Parameters aus Array

$p_name = $_POST['p_name'];

if ($p_name) {

// Namen ausgeben, wenn eingegeben.

print("Hallo $p_name.<p>");

// Zugriff auf Umgebungsvariable

print("Client-IP-Adresse: ".$_SERVER['REMOTE_ADDR']);

}

</script>

<FORM method="POST">

Bitte Namen eingeben: <INPUT type="text" name="p_name" size="30">

</FORM>

</BODY>

</HTML>

(50)

50

Java und Datenbanken

Java Database Connectivity (JDBC)

Idee

Drivertypen

Klassen und Schnittstellen

SQLJ (Embedded SQL in Java)

J2EE Anwendungen

Java Servlets

Java Server Pages

(51)

51

Java Database Connectivity (JDBC)

Motivation:

Zugriff auf SQL-Datenbanken mit Java benötigt

Nachteil selbstgestrickter Java-Zugriffsmethoden

aufwendig

fehlerbehaftet

nicht einfach portierbar

Überwindung des Mismatch zwischen

Java (objektorientiert, ohne Pointer)

C (prozedural, mit Pointern)

SQL (mengenorientiert)

Beziehung zu ODBC

Wurde in Anlehnung an ODBC (Open Database Connectivity) entwickelt und mit einer ähnlichen Klassenbibliothek

ausgestattet

(52)

52

JDBC (Forts.)

DB-Kommunikation erfolgt über ein Call Level Interface (CLI)

Basiert auf Java: kann Objekte direkt verwenden, um DB-Objekte und ihre Operationen direkt und natürlich darzustellen

Beispiel: Objekt Connection mit einer Methode close()

JDBC-Klassenbibliothek

Seit JDK 1.1 im Sprachumfang enthalten, wird ständig um weitere Funktionalität ergänzt

Trennung in ein “Core API“ und “Standard Extension API“

(53)

53

JDBC Entwurfsziele

Call-Level Dynamic SQL API

Äquivalent zu ODBC und X/Open CLI

Allgemeines API, das die Basis-SQL-Funktionalität unterstützt

Höhere APIs (z.B. mit Mapping Klassen-Tabellen) können darauf aufsetzen

Implementierbar “on top of“ allgemeinen SQL-APIs

Implementierbar auf Basis von ODBC und X/Open CLI

Brückentreiber JDBC-ODBC somit leicht realisierbar

SQL Conformance

Jeder SQL-Dialekt verarbeitbar, falls ein JDBC-Driver dafür vorhanden ist

Mindest-Anforderung: SQL-92 (Entry Level) muß von allen Drivern unterstützt werden

Strenges, statisches Typing

Einfaches API für den Normalfall (80-20 Regel)

(54)

54

JDBC-Architektur

Application Driver Manager

Driver Driver Driver

Data source Data source Data source

JDBC API

JDBC Driver API

Proprietär

(55)

55

JDBC Klassen und Interfaces

java.sql.DriverManager (class, class methods)

java.sql.Connection (interface)

java.sql.Connection (interface)

java.sql.Statement (interface)

java.sql.Statement (interface)

java.sql.Statement (interface)

java.sql.Resultset (interface)

java.sql.Resultset (interface)

java.sql.Driver

(interface, drivers only)

(56)

56

Überblick: Datenbankanfragen mit JDBC

Query

Close Connect

Process results Datenbankverbindung

herstellen

Datenbankanfrage

Verbindung zur DB schließen

Ergebnisse verarbeiten

(57)

57

Phase 1: Connect

Query

Close Connect

Process results

Driver registrieren

Verbindung zur Datenbank

(58)

58

Phase 2: Query

Close Connect

Query Erzeuge ein Statement

Process results

Abfrage auf Datenbank

(59)

59

Statement Object

Ein Statement Objekt sendet SQL-Befehl zur Datenbank.

Man benötigt aktive Connection, um JDBC Statement zu erzeugen.

Statement hat drei Methoden, um ein SQL Statement zu erzeugen:

executeQuery()für QUERY Statements

executeUpdate()für INSERT, UPDATE, DELETE, oder DDL statements

execute() für beliebiges Statement

(60)

60

Phase 3: Verarbeiten der Ergebnisse

Close Query

Durchlaufen der Ergebnisse

Process Results

Zuweisen der Ergebnisse an Java- Variablen

Connect

(61)

61

Das ResultSet Objekt

JDBC liefert die Ergebnisse einer Query in einem ResultSet Objekt.

Ein ResultSet verwaltet einen Cursor, der auf den aktuellen Datensatz zeigt.

Verwende next() zum Durchlaufen des Result Set Satz für Satz.

getString() , getInt() , usw. für

Wertzuweisung an Java-Variablen.

(62)

62

Phase 4: Close

Connect

Query

Process Results

Close

Schließe Result Set

Schließe Statement

Schließe Connection

(63)

63

JDBC

Beispiel SELECT

// Create a connection and connect Connection conn;

Statement stmt;

ResultSet rs;

int partID;

float price;

conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword");

// Create a statement and execute a SELECT statement stmt = conn.createStatement();

rs = stmt.executeQuery

("SELECT PartID, Price FROM Parts");

// Create a connection and connect Connection conn;

Statement stmt;

ResultSet rs;

int partID;

float price;

conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword");

// Create a statement and execute a SELECT statement stmt = conn.createStatement();

rs = stmt.executeQuery

("SELECT PartID, Price FROM Parts");

(64)

64

JDBC

Beispiel SELECT (Forts.)

// Fetch and print each row while (rs.next())

{

partID = rs.getInt(1);

price = rs.getFloat(2);

System.out.println("Part Number: " + partID + " Price: " + price);

} // Close the result set rs.close();

// Close the statement and connection stmt.close();

conn.close();

// Fetch and print each row while (rs.next())

{

partID = rs.getInt(1);

price = rs.getFloat(2);

System.out.println("Part Number: " + partID + " Price: " + price);

} // Close the result set rs.close();

// Close the statement and connection stmt.close();

conn.close();

(65)

65

JDBC

Beispiel UPDATE

// Create a connection and connect Connection conn;

Statement stmt;

int rowCount;

conn = DriverManager.getConnection("jdbc:odbc:Sales", "myname", "mypassword");

conn.setAutoCommit(false);

// Create a statement and execute an UPDATE statement stmt = conn.createStatement();

rowCount = stmt.executeUpdate

("UPDATE Parts SET Price = 10.0 WHERE PartID = 123");

(66)

66

JDBC

Beispiel UPDATE (Forts.)

// Check if row was changed if (rowCount != 0)

{

System.out.println("Price changed");

}

else {

System.out.println("Part not found");

}

// Commit the transaction conn.commit();

// Close the statement and connection stmt.close();

conn.close();

(67)

67

J2EE Anwendungen

J2EE = Java 2 Platform Enterprise Edition

Standard für die Entwicklung mehrschichtiger, komponentenbasierter Java-Anwendungen

Vereinfacht Entwicklung durch Definition eines Programmiermodells auf Basis von standar-

disierten und komponentenbasierten Objekten

Oracle Application Server Oracle10gAS (OC4J)

vollständige Umsetzung eines J2EE-Containers:

JSP, Java Servlets, EJB, JDBC

(68)

68

Java Servlets

Einordnung:

kleine Serverprogramme

Voraussetzung

Integration einer JVM in den Web-Server bzw. Kooperation mit einem Zusatzprozess

Voller Zugriff auf Java-API

Vorteile:

Plattform- und herstellerunabhängige Erweiterung von Web- Servern möglich (durch standardisierte Servlet-API)

Dynamisches Binden möglich (Java-Klassenlader)

Hinzufügen und Entfernen von Modulen ohne Neustart des Servers

(69)

69

Web/DB-Anbindung über Java Servlets

Weitere Vorteile

alle Möglichkeiten der Sprache Java

Web-Client Web-Server

Servlet-Engine

DB-Server Java-

Klassenbibliothek

HTTP

J V M

JDBC

gleiches Sicherheitskonzept wie Java (Security Manager),

verhindert Ressourcenmißbrauch

Leistung: bleiben im Speicher des Servers, DB-Verbindung nur

einmal nötig

Lastverteilung: Aufruf anderer Servlets möglich

mehr Programmieraufwand, Ent- wicklungsumgebungen verfügbar

Referenzen

ÄHNLICHE DOKUMENTE

– POST: Client schickt Daten an den Server, wobei diese nicht in der URL sondern direkt im Header der Anforderung übergeben werden.. – HEAD, PUT, DELETE: keine Bedeutung für

• zustandsinvariante Server liefern Informationen, die sich zwar ¨ andern k¨ onnen, die aber unabh¨ angig von Client- Anfragen sind. Beispiele: Web-, FTP-, Name- und

Falls die weitere Verarbeitung des XML-Dokumentes vorsieht, dass alle Dokumente einer Datenbank zu einem XML-Dokument zusammengefügt werden, kann dies ebenfalls mit ei- ner

public static void main(String args[]) throws Exception {.

public static void main(String[] argv) { Socket socket;..

public static void main(String[] argv) { Socket socket;.

 A typical transaction server consists of multiple processes accessing data in shared memory.. 

HEAD Request to read the header of a web page PUT Request to store a web page on the server POST Attach data to a resource (e.g. news or forms). DELETE Delete a