B.41 B.42 B.43 B.44 - Verteilte Systeme

Werbung
5.4 Java-Servlets (4)
5.5 Servlet-Filter
■ Einfügen von Ausgaben anderer Servlets
■ Komponente ähnlich Servlet
◆ für generische Komponenten von Webseiten
◆ wird für URIs konfiguriert
Browser
◆ mehrere Filter möglich
• z.B. Banner, Hit-Counter etc.
◆ Realisierung:
• Filterkette
HTTP
◆ Änderung der Anfrage und/oder
der Antwort
• Ermitteln eines RequestDispatcher-Objekts
• Aufruf der Methode include
Container
Filter
Filter
Servlet
■ Realisierung
■ Weiterleiten der Anfrage
◆ z.B. in Dispatcher-Servlets Weiterleitung an dedizierte Servlets je nach Inhalt
eines Formulars
◆ Implementierung der Methode
void doFilter(
◆ Realisierung
ServletRequest request,
ServletResponse response,
FilterChain chain );
• Ermitteln eines RequestDispatcher-Objekts
• Weiterleitung an nächsten Filter
• Aufruf der Methode forward
• Beeinflussung der Anfrage
• Beeinflussung der Antwort
B.41
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.42
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
5.5 Servlet-Filter (2)
5.6 Servlet-Deployment
■ Einsatzgebiet
■ Konfiguration des Containers
◆ Authentisierung
◆ „Deployment“ (wörtlich Einsatz, Stationierung)
◆ Logging
◆ Bereitstellung der Dienste
◆ Konvertierungen
• Konfiguration der Servlet-Klassen für verschiedene URIs
• Formatkonvertierungen z.B. Bilder
■ Zentrales Element
• Kompression
◆ spezielles Java-Archive-File mit Endung .war
• XSLT-Nachbearbeitungen
◆ enthält Java-Klassendateien für Servlets
◆ enthält einen XML-basierten Deployment-Deskriptor (web.xml)
◆ enthält zusätzliche Dateien
• z.B. statische Webseiten zur Unterstützung der Servlets
◆ eine WAR-Datei enthält typischerweise eine Web-basierte Anwendung /
einen Web-basierten Dienst
■ Containerabhängiges Deployment
B.43
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
◆ verschiedene Realisierungen
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.44
5.6 Servlet-Deployment (2)
5.7 Anwendungszustand
■ Container beherbergt typischerweise mehrere Dienste
▲ HTTP-Protokoll ist zustandslos
◆ durch Konfiguration im Deployment wird festgelegt:
■ Web-basierte Anwendung kann Zustand speichern
• Zuordnung von eingehenden URIs auf Servlets
◆ Kontextobjekt
• Zuordnung von eingehenden URIs auf statische Inhalte
• von jedem Servlet aus erreichbar
• Zuordnung von Filterkomponenten auf Servlets
• kann beliebige Objekte unter Namen speichern
(getAttribute, setAttribute)
◆ Zugriff durch Servlets und Filter der gleichen Anwendung
Browser
◆ Einsatz
HTTP
Container
Servlet
Servlet
Servlet
• z.B. Hit-Counter, Zugangsdaten für Datenbankzugriff
Web-basierte Anwendung
Servlet
Servlet
Servlet
Servlet
Servlet
Servlet
B.45
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.46
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
5.8 Sitzungszustand
5.8 Sitzungszustand (2)
▲ HTTP-Protkoll ist zustandslos
■ Beenden der Sitzung
◆ zusammenhängende Interaktionen eines Client nicht zuordenbar
◆ explizites Invalidieren durch Methode invalidate
◆ Timeout der Sitzung bei Inaktivität
✱ Servlet-Container verwaltet Sitzungszustand
• konfigurierbar im Deployment-Deskriptor
■ Erzeugung einer Sitzung
◆ Zugriff auf Sitzungsobjekt vom Typ HttpSession durch Aufruf von getSession
am Request-Objekt
■ Realisierung der Zuordnung
◆ Einsatz von Cookies
◆ Sitzungsobjekt kann beliebige Objekte unter Namen speichern
• automatisch durch Container
• Zugriff über getAttribute, setAttribute
◆ Einsatz von Sitzungs-IDs in den URIs, z.B.:
■ Nutzung des Sitzungsobjekts
http://www.treasurebank.de/konto;jsessionid=aBcd430872Dc
◆ Zwischenspeichern von Informationen über mehrere HTTP-Requests hinweg
• z.B. Zustand einer mehrstufigen Operation (Aufüllen mehrere Formulare bis
zum Ende der Operation)
◆ Problem richtige URIs auf der gelieferten Resultatseite
• Einsatz von Codierfunktion encodeURL unter Angabe der Original URI
• z.B. Einkaufswagen
B.47
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.48
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
5.9 Java-Server-Pages
5.9 Java-Server-Pages (2)
■ Nachteil von Servlets
✱ JSP-Seite ist umgestülptes Servlet (und umgekehrt)
◆ Programmieraufwand für fast vollständig statische Web-Inhalte
■ Interne Implementierung
• z.B. lediglich Page-Counter hinzuzufügen
◆ automatische Erzeugung eines Servlets aus HTML/XML-Dokument
im JSP-Container
• z.B. lediglich wenige benutzerspezifischen Teile anzupassen
• in der Regel bei erster Anfrage
■ Konzept der Java-Server-Pages (JSP)
◆ Entwicklung eines HTML, XHTML- oder XML-Dokuments
<html>
<body>
<p>...</p>
Servlet Code
• wird als Ergebnis einer Anfrage zurückgegeben
◆ dynamische Anteile durch spezielle Auszeichnungen
• zum Zugriff auf Java-Variablen
...
doGet(...) { ...
out.print “<html>\n<body>\n”;
out.print “<p>...</p>\n”;
Servlet Code
</body>
</html>
• zum Aufruf von Java-Objekten
• für Bedingungen und Schleifen
out.print “</body>\n</html>”;
...
}
XHTML-Dokument
Servlet-Klasse
B.49
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.50
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
5.10 Auszeichnungen
5.11 Deployment
■ HTML
■ Integration in war-Files
◆ nutzt „Standardsyntax“
◆ Erkennung von Dateien mit Endung .jsp als JSP-Dokumente
◆ Integration in Deployment-Deskriptor web.xml
• spezielle zusätzliche Auszeichnungen, z.B. <%...%> und <@...@>
■ XML
■ Lebenszyklus
◆ XML-Elemente in speziellem Namensraum
◆ Ansprechen der URI durch Browser
◆ z.B.:
◆ Erzeugen des Servlet-Codes aus den JSP-Auszeichnungen
• Direktiven entscheiden über Zeitpunkt und Art der Erzeugung
<jsp:setProperty xmlns:jsp="http://java.sun.com/JSP/Page"
name="..." property="..." value="..." />
• direkte Übernahme von Java-Codeschnipsel
■ Programmierung im JSP-Dokument
• Umsetzen von Auszeichnungen in Java-Code
◆ vorgegebene Anweisungen/Auszeichnungen und XML-Elemente
• Umsetzen von statischen Seitenanteilen in Ausgabeanweisungen
◆ weitere Anweisungen integrierbar durch Tag-Libraries
• Umsetzen von Tags aus Tag-Libraries in Aufrufe an spezielle Handler-Klassen
◆ Initialisierung des Servlets
◆ Aufruf des Servlets
B.51
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.52
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
5.12 Anwendungsprogrammierung
5.12 Anwendungsprogrammierung (2)
■ JSP Expression Language
■ Speicherung von Anwendungsdaten
◆ eigene Miniprogrammiersprache für Ausdruckbearbeitung
◆ Typisch: Nutzung von JavaBeans
◆ spezielle JSP-Anweisungen zum Zugriff
• Zugriff auf Variablen (Arrays, Lists, Maps etc.)
• Zugriff auf JavaBean-Objekte
– Konvention für die Programmierung von Java POJOs
– z.B. getXyz() und setXyz() Methoden
• Beispiel
• einfache Rechen- und Vergleichsfunktionen
• Zugriffsbeispiel
<jsp:useBean
id="shoppingcart" class="avid.Cart"
scope="session" />
${shoppingcart.totalAmount}
• Funktionsaufrufe
◆ Beispiel:
${header["host"] eq "www.uni-ulm.de"}
■ Implizite Objekte
◆ erlauben Zugriff auf Request-Parameter
◆ spezielle Map-Objekte für Kontextabhängige Objekte
• z.B. Attribute aus dem Sitzungskontext (vgl. Servlets)
B.53
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.54
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
5.13 Tag-Library
5.14 Bewertung
■ Tag-Library
▲ Nachteile von CGI, Servlets und JSP
◆ Java-Klassenbibliothek mit speziellen Schnittstellen
◆ Zugang zu persistenten Zustandsinformationen mühsam
◆ Deployment im Container und im JSP-Dokument
• Stichwort: Persistenz
◆ neuer XML-Namensraum für Anweisungen einer Tag-Lib
◆ Koordinierung nebenläufiger Anfragen problematisch
◆ verschiedene Anwendungsbereiche
• Stichwort: Transaktionen
• Datenbankanbindung
◆ unter Umständen Vermischung von Darstellung und Anwendungslogik
• Stringmanipulationen
◆ Sicherheitsanforderungen müssen integriert werden
• Zugang zu Verzeichnisdiensten
• unter Umständen Vermischung mit Anwendungslogik nötig
• etc.
B.55
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.56
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
5.15 Literatur
6 Model-View-Controller
■ Verwendete Referenzen und weiterführende Literatur
■ Entwurfsmuster für Anbindung von Benutzeroberflächen an Anwendung
◆ Sun Microsystems: Java Enterprise Edition 5, Tutorial.
<http://java.sun.com/javaee/5/docs/tutorial/doc/>
◆ kein Entwurfsmuster im strikten Sinn
◆ Idee: Entkoppelung der Anwendungslogik von der Darstellung und der
Interaktion durch den Benutzer
◆ Sun Microsystems: JavaServer Pages 2.0 specification.
<http://java.sun.com/products/jsp/download.html#specs >
◆ Erfinder: Trygve Reenskaug (1979)
◆ Sun Microsystems: The JavaServer Pages Standard Tag Library (JSTL) web site.
<http://java.sun.com/products/jsp/jstl >
◆ Sun Microsystems: Java Beans specification. Ver. 1.01-A. Graham Hamilton (Ed.),
1998. <http://java.sun.com/beans>
View
Client
Anwendung
Model
Controller
B.57
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.58
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
6 Model-View-Controller (2)
6 Model-View-Controller (3)
■ Model
✱ Vorteile
◆ enthält Programmlogik
◆ mehrere Views und Controller ohne Änderung der Anwendungslogik
◆ verschiedene Darstellungsformen
• z.B. Webshop-Funktionalität
◆ enthält Anwendungsdaten
• verschiedene GUI-Konzepte (z.B. HTML, Swing)
• Anpassung an verschiedene Endgeräte
■ View
◆ erzeugt die Präsentation nach außen aus den Anwendungsdaten
• Einsatz des Observer-Patterns zur Beobachtung des Modelinhalts
◆ komponierbar aus mehreren Teilen
• z.B. Banner, Sidebar
• Einsatz des Composite-Patterns
■ Controller
◆ nimmt Benutzereingaben entgegen
◆ wandelt Eingaben in Interaktionen mit dem Model um
B.59
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.60
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
6.1 MVC und JSP/Servlets
6.1 MVC und JSP/Servlets (2)
■ „Model-1“ Architektur
Client
■ „Model-2“ Architekturen
View/Ctrl.
View/Ctrl.
View/Ctrl.
Anwendung
View
View
View/JSP
Model
Client
Anwendung
Model
Ctrl/Servlet
◆ Interaktion und Darstellung basiert auf Seiten und Links
◆ View
◆ Interaktionen erfolgen über einen zentralen Controller
• JSP-Seite oder Servlet
• z.B. realisiert durch zentrales Dispatcher-Servlet
◆ Model
◆ Choreographie der Eingaben zu verschiedenen Ansichten
• lässt sich in Java-Objekte z.B. Beans auslagern
• z.B. realisiert durch JSP-Seiten
• häufig Vermischung mit View nicht ganz vermeidbar
• Beschreibung der Kontrollfunktion außerhalb der Views
◆ Controller
◆ Beispiel: Java Server Faces, JSF
• verstreut über JSP-Seiten bzw. Servlets
– Verlinkung zu anderen Seiten
– Eingabeprüfung etc.
• Vermischung mit View
B.61
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.62
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
6.2 Literatur
7 RPC
■ Verwendete Referenzen und weiterführende Literatur
✱ Motivation
◆ T. Reenskaug: The model-view-controller (MVC), its past and present. 2003.
◆ Verteilung von Software-Einheiten auf mehrere Rechensysteme
◆ L. Singer: Model-View-Controller. Kurz und Gut. Software-Engineering, Leibniz
Univ. Hannover, 2004.
■ Prozeduren (oder Funktionen) als Verteilungseinheiten
◆ Zugriffstransparenz: lokaler Prozeduraufruf nicht von entferntem
Prozeduraufruf unterscheidbar (im Idealfall, wenn fehlerlos)
◆ entfernter Prozeduraufruf (Remote Procedure Call, RPC)
■ Aufrufpfad bei lokalem Aufruf
Prozedur
B.63
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.64
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
7 RPC (2)
7.1 Stellvertreter
■ Aufrufpfad bei entferntem Aufruf
■ Aufgabe des client-seitigen Stellvertreters
◆ stellt Stub-Prozedur für Aufrufe bereit
entf. Prozedur
◆ Einpacken der Parameter (Marshalling)
◆ Kommunikation mit server-seitigem Stellvertreter
(in der Regel Nachricht hin und zurück)
◆ Auspacken der Ergebnisse (Unmarshalling)
◆ Rückgabe der Ergebnisse an Aufrufer
▲ Problem
Netzwerk
◆ Behandlung von Fehlersituationen
Rechnergrenze
• server-seitiger Stellvertreter antwortet nicht
◆ Stellvertreterkomponenten auf Client- als auch auf Server-Seite
(Proxy, Stub, Skeleton)
• Antwort geht verloren
◆ Aufrufer muss nicht zwischen lokalen und entfernten Aufrufen unterscheiden
B.65
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.66
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
7.1 Stellvertreter (2)
7.2 Parameterübergabe
■ Aufgabe des server-seitiger Stellvertreter
■ Probleme der Parameterübertragung
◆ Annahme von Anfragen vom Netzwerk
(in der Regel Nachricht annehmen)
◆ große Parameter
◆ Auspacken der Parameter (Unmarshalling)
◆ Zeiger
• Felder, Matrizen etc.
◆ Aufruf der gewünschten Prozedur
• Speicheradressen sind auf anderem Rechner bedeutungslos
◆ Einpacken der Ergebnisse (Marshalling)
◆ Call-by-Reference, Call-by-Name
◆ Kommunikation mit client-seitigem Stellvertreter
(in der Regel Nachricht versenden)
• Rückzugriff auf Variable muss über das Netz ermöglicht werden
• meist nur für eingeschränkte Datentypen erlaubt
(z.B. entfernte Prozeduren)
▲ Probleme
◆ Finden der gewünschten Prozedur
◆ Unterstützung bei Kommunikationsfehlern
B.67
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.68
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
7.3 RPC-Semantik
7.3 RPC-Semantik (2)
✱ Wie wird ein entfernter Prozeduraufruf im Fehlerfall ausgeführt?
■ At-Least-Once Semantik
◆ ein Aufruf wird mindestens einmal ausgeführt (evtl. auch mehrfach)
■ Exactly-Once Semantik
◆ Aufrufer bemerkt niemals einen Fehler
◆ ideal: Aufruf wird genau einmal ausgeführt
■ Mögliche Implementierung
◆ im Verteilten System schwierig zu erreichen
• Fehler in asynchronen Systemen nicht von langen Laufzeiten unterscheidbar
• realisierbar mittels Transaktionen oder mit stabilem, persistentem Speicher
◆ kommt keine Antwort innerhalb einer gewissen Zeit (Timeout), wiederholt
Client-seitiger Stellvertreter die Anfrage
◆ keine weiteren Maßnahmen bei Server-seitigem Stellvertreter nötig
■ Annahme
◆ Server-seitiger Stellvertreter könnte doppelte Anfragen erkennen
(clientspezifische Seriennummer)
◆ unzuverlässige, nachrichtenbasierte Kommunikation als Basis
• potenziell unbegrenzt lange Nachrichtenlaufzeit,
d.h. Nachricht, die der Sender als verloren ansieht, könnte doch
angekommen sein
▲ Problem: idempotente Prozedur notwendig
◆ mehrfacher Aufruf ändert nichts an dem Gesamtergebnis
B.69
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.70
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
7.3 RPC-Semantik (3)
7.3 RPC-Semantik (4)
■ At-Most-Once Semantik
■ Komplexere Implementierung
◆ Anfrage wird höchstens einmal ausgeführt
◆ Client-seitiger Stellvertreter wiederholt Anfrage nach Timeout
(maskiert verlorene Anfragen im Netzwerk)
◆ im Problemfall:
Server
Client
• keine Angabe, ob ausgeführt (vollständig oder teilweise)
■ Einfache Implementierung (nur Client-Seite)
Anfragen
Timeout
◆ kommt keine Antwort innerhalb einer gewissen Zeit (Timeout), gibt Clientseitiger Stellvertreter Fehler an Aufrufer zurück (At-Most-Once Sem.)
◆ ansonsten wird Ergebnis zurückgegeben (Exactly-Once Sem.)
Annehmen
Anfrage
laufend
blockiert
nachrich
t
▲ Problem
◆ häufige Fehler wg. langer Prozedurlaufzeiten
Antwortn
◆ schlechte Fehlererkennung wg. langer Timeouts
achricht
Antworten
B.71
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.72
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
7.3 RPC-Semantik (5)
7.3 RPC-Semantik (6)
◆ Server ignoriert wiederholte Anfrage falls Antwort noch nicht gesendet wurde
(Seriennummer)
achricht
Timeout
Anfrage
n
Anfragen
Annehmen
Timeout
laufend
blockiert
Ignorieren
Antwortn
achricht
Server
Client
Server
Client
Anfragen
◆ Server speichert Antworten und wiederholt diese bei identischen Anfragen
(Seriennummern)
Anfrage
nachrich
t
Antwortn
achricht
Antworten
laufend
blockiert
a
Antwortn
Antworten
Annehmen
chricht
Wiederholen
◆ ansonsten wird Ergebnis zurückgegeben (Exactly-Once Sem.)
B.73
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.74
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
7.3 RPC-Semantik (7)
7.3 RPC-Semantik (8)
▲ Problem: Serverausfälle
■ Serverausfall
◆ nicht erkennbar, ob Anfrage bearbeitet wurde oder nicht
Server
Client
■ Erweiterung der Implementierung
Anfragen
◆ Client erkennt Serverausfall und gibt Fehler an Aufrufer zurück
(At-Most-Once Sem.)
nachrich
t
Annehmen
laufend
blockiert
Timeout
◆ Server-seitiger Stellvertreter erkennt und ignoriert Anfragen von vor dem
Serverausfall
Anfrage
◆ Realisierung: persistente Generationsnummern im Server
• Client verschickt immer aktuelle Generationsnummer des Servers an den
Server
ort
Fehlerantw
Fehler
• Server zählt beim Ausfall Generationsnummer hoch
• Server ignoriert Anfragen kleinerer Generationsnummern und teilt Client
neue Generationsnummer mit
B.75
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.76
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
7.4 Implementierung des RPC
8 Java RMI
■ Methodenaufrufe
■ Java Remote Method Invocation
◆ wie Prozeduraufrufe mit zusätzlichem impliziten Parameter (Objektbezeichner)
◆ Erweiterung des Java Programmiermodells für Verteilung
◆ mehrere Java-Virtual-Machines (JVMs) spannen ein verteiltes System auf
■ Implementierung der Aufrufprotokolle
■ Java Objekte werden verteilt
◆ über Nachrichten
◆ orts- und zugriffstransparente Methodenaufrufe an verteilten Java Objekten
• Abbildung auf nachrichtenbasierte Kommunikation
• Anfrage- und Antwortnachricht, Fehlernachrichten etc.
■ Schnittstelle
• z.B. Sun RPC (basiert auf UDP/IP)
◆ verteilte Java Objekte / RMI-Objekte implementieren
spezielles Java-Interface (java.rmi.Remote)
◆ über Ströme
• Abbildung auf Datenstrom
◆ nur Marker, enthält keine Methoden
• Anfrage und Antwort eingebettet in Datenstrom
◆ alle Methoden in von java.rmi.Remote erbenden Interfaces müssen die
Exception java.rmi.RemoteException deklarieren
• basiert oft auf TCP/IP (weniger wg. Stromeigenschaft als wg.
Zuverlässiggkeit), z.B. CORBA IIOP, Java JRMP (RMI-Protokoll)
• zeigt Fehler bei entfernten Aufrufen an (At-Most-Once-Semantik)
B.77
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.78
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
8 Java RMI (2)
8 Java RMI (3)
■ Entfernt ansprechbare Methoden
■ RMI Compiler
◆ entfernt sind nur die Methoden aus Interfaces ansprechbar, die von Remote
erben
◆ andere Methoden oder Instanzvariablen sind nur lokal ansprechbar
◆ erzeugt Stubklasse
◆ z.B. für avid.MyPrinter wird Stubklasse avid.MyPrinter_Stub
erzeugt
◆ Stubklasse implementiert alle Remote-Interfaces der ursprünglichen
Objektklasse
■ Referenzen
◆ Referenzen sollten nur mit dem Namen eines Remote-Interfaces typisiert
werden nicht mit dem Klassennamen der Implementierung
■ Erzeugen eines RMI-Objekts
◆ Implementierungsklasse implementiert mind. ein Remote-Interface
◆ Implementierungsklasse erbt von java.rmi.server.UnicastRemoteObject
• vorbereitet für entfernte Aufrufe (exportiert)
B.79
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.80
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
8 Java RMI (4)
8 Java RMI (5)
■ Lokale Aufrufe
■ Beispiel
◆ lokale Referenzweitergabe
package avid;
■ Entfernte Aufrufe
public interface Printer implements java.rmi.Remote {
public void print( String s )
throws java.rmi.RemoteException;
}
◆ Parameter werden serialisiert (Java Serialization)
• Erzeugung eines Bytestroms aus Java-Objekten und Datentypen
• Übertragung über Netzwerk
• Rückgewinnung von Java-Objekte und Datentypen aus Bytestrom
◆ Nicht-Objekt-Datentypen werden kopiert (Call-By-Value)
◆ exportierte RMI-Objekte: Stubobjekt für das RMI-Objekt wird serialisiert (Call-ByObject-Reference)
◆ nicht-exportierte RMI-Objekte und andere Objekte werden serialisiert,
d.h. kopiert mit all ihren weiterführenden Referenzen (Call-By-Copy)
public class MyPrinter extends
java.rmi.server.UnicastRemoteObject
implements avid.Printer {
...
public void print( String s )
throws java.rmi.RemoteExeception {
...
}
...
}
◆ Generierung der Stubs durch den RMI-Compiler (rmic)
B.81
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.82
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
8 Java RMI (6)
8.1 Protokolle
■ Beispiel (fortges.)
■ Java-RMI mit TCP-basiertem Protokoll
◆ auf Serverseite:
◆ At-most-once-Semantik
◆ Übertragung von Daten durch Java-Serialisierung
...
avid.Printer p = new avid.MyPrinter();// Erzeug. des Objekts
// Im Namensdienst registrieren
java.rmi.Naming.bind( "MyPrinter", p );
...
■ Java-RMI mit IIOP (Internet Inter-ORB Protocol)
◆ Protokoll aus der CORBA-Middleware-Architektur
• System für heterogene verteilte Objekte
◆ auf Clientseite:
◆ Kompatibilität mit CORBA-Systemen
// Referenz besorgen
avid. Printer prt= (Printer)
◆ At-most-once-Semantik
java.rmi.Naming.lookup( "MyPrinter"
);
...
try {
prt.print( "MyPrinter" ); // entferntes Objekt aufrufen
catch( java.rmi.RemoteException e ) {
...
}
◆ Übertragung durch einheitliche Netzwerkdarstellung (CDR)
B.83
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.84
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
8.2 Literatur
9 Transaktionen
■ RMI Tutorial
✱ Motivation
◆ Java SE 6:
<http://java.sun.com/javase/6/docs/technotes/guides/rmi/>
◆ Konsistenz von Geschäfts- und Anwendungsdaten
• bei Fehlern
• bei nebenläufigem und parallelem Zugriff
– dient zur Koordinierung
■ Java Remote Method Invocation – Specification
◆ Java SE 6:
<http://java.sun.com/javase/6/docs/platform/rmi/spec/
rmiTOC.html>
■ Transaktionen
◆ fassen mehrere Teilaktionen zu einer atomaren Operation zusammen
• entweder alles ausgeführt oder nichts (Atomicity)
◆ Fehler führen zu einem Rücksetzen der bisherigen Effekte (Roll-Back)
B.85
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.86
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
9 Transaktionen (2)
9 Transaktionen (3)
■ Eigenschaften typischer Transaktionsverfahren (ACID)
■ Start der Transaktion
◆ Atomicity: alle Transaktionen (mit allen Teilaktionen) erscheinen atomar
◆ typischerweise begin()-Aufruf an einem Transaktionsmanager
• Möglichkeit zum Roll-Back im Fehlerfall
◆ Consistency: jede Transaktion hinterlässt das System in konsistentem Zustand
(inkonsistente Zustände führen zu Roll-Back)
◆ Isolation: eine Transaktion „sieht“ keine unvollständig ausgeführte andere
Transaktion im System
■ Beenden der Transaktion
◆ typischerweise commit()-Aufruf an einem Transaktionsmanager
■ Abbruch der Transaktion
◆ typischerweise abort()-Aufruf an einem Transaktionsmanager
• Ausführung nebenläufiger Transaktionen ist identisch mit einer seriellen
Ausführung
◆ Durability: Persistenz der Aktionen einer Transaktion über die Lebenszeit von
Teilsystemen hinaus (z.B. Crash des Datenbankservers)
B.87
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.88
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
9.1 Transaktionen in Java
9.2 Funktionsweise
■ CORBA OTS (Object Transaction Service)
■ Start der Transaktion heftet einen Kontext an den laufenden Thread
◆ Menge von Schnittstellen für einen Transaktionsmanager
◆ Thread-lokale Variablen in Java
◆ Weitergabe des Transaktionskontexts im Verteilten System
■ JTS (Java Transaction Service)
• z.B. über RMI mit dem IIOP-Protokoll
◆ Abbildung von OTS auf Java
■ Nutzung von transaktionalen Ressourcen
■ Rückgriff auf JTA (Java Transactions API)
◆ z.B. Datenbanken, aber auch spezielle Java Objekte
◆ lediglich Schnittstelle zum Starten und Beenden von Transaktionen
◆ Zugriff auf Ressource führt zum (automatischen) Eintrag eines ResourceManagers im Transaktionskontext
◆ interne Schnittstellen bleiben verdeckt (z.B. zwischen Datenbank und
Transaktionsmanger etc.)
◆ commit() und rollback() führen zu entsprechenden Benachrichtigungen des
Resource-Managers und löschen Transaktionskontext
◆ javax.transaction.UserTransaction-Objekt als API für Anwendung
• Aufruf von begin(), commit() oder rollback()
• dieser realisiert Transaktionssemantik für Ressource
• UserTransaction-Objekt wird typischerweise von einer Umgebung
bereitgestellt, z.B. einem Application Server
▲ Bei JTA und JTS in aller Regel nur flache Transaktionen
B.89
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
9.3 Literatur
■ JTS
◆ Sun Microsystems: Java Transaction Service (JTS). Ver. 1.0, 1999.
<http://java.sun.com/jts>
■ JTA
◆ Sun Microsystems: Java Transaction API (JTA). Ver. 1.1, 2002.
<http://java.sun.com/jta>
■ OMG OTS
◆ Object Management Group: Transaction Service Specification. Ver. 1.2.1,
Document formal/01-11-03, 2001.
<http://www.omg.org/cgi-bin/doc?formal/2001-11-03>
B.91
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
B.90
© 2002-2008, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [AvID-B-Base.fm, 2008-04-16 20.48] http://www-vs.informatik.uni-ulm.de/teach/ss08/avid/
Herunterladen