2 Konzepte und Modelle verteilter Kommunikation

Ähnliche Dokumente
Masterkurs Verteilte betriebliche Informationssysteme

Komponentenorientierte Software-Entwicklung. Seite 1 / 44

Enterprise JavaBeans Überblick

Java 2, Enterprise Edition Einführung und Überblick

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. Java Transaction Processing Teil 1

Softwareentwicklung mit Enterprise JAVA Beans

Einsatz von Applikationsservern. Untersucht am Beispiel des Sybase Enterprise Application Server

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Enterprise JavaBeans

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013

Web Services. XML, WSDL, SOAP und UDDI Einblicke und Ausblicke J.M.Joller 1

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

SE2-10-Entwurfsmuster-2 15

Überblick Wintersemester 2014/2015

Client/Server-Systeme

30 Jahre Server Von Transaktionssystemen zu Web-Services

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013. WebSphere MQ Teil 3

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

Kap. 2 Middleware-Infrastruktur durch Transaction Processing Monitore ( TP-Heavy )

3 Programmiermodelle für parallele und verteilte Systeme

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Enterprise Edition Teil 4. Schnittstellen

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

VS12 Slide 1. Verteilte Systeme. Vorlesung 12 Sebastian Iwanowski FH Wedel

Entwicklung verteilter Anwendungen I

Netzwerkprogrammierung unter Linux und UNIX

ebusiness-plattformen am Beispiel von J2EE

Client/Server-Systeme

Musterlösung Übungsblatt 1 Netzprogrammierung WS 05/06

11. Enterprise Java Beans Grundlagen der Programmierung II (Java)

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, Universität Freiburg, Germany

ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS. Piotr Kasprzak

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

High End Application Server. Copyright 2009 FUJITSU TECHNOLOGY SOLUTIONS

Alexander Schill Thomas Springer. Verteilte Systeme. Grundlagen und Basistechnologien. 2. Auflage. 4y Springer Vieweg

Application Server Application Server: Motivation Application Server: Begriff

Warum EJB Technologie (1)?

Enterprise JavaBeans Überblick: 17. Enterprise Information System Schicht

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Kap. 6 Message-Oriented Middleware (MOM)

Hauptseminar Management von Softwaresystemen. Techniken der System-Integration EAI, Middleware, SOA, CORBA

Enterprise Java Beans Einführung

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert

Verteilte Systeme - 1. Übung

Übung3. Test der Möglichkeiten des JDBC-Interfaces. Prof. Dr. Andreas Schmietendorf 1. Übung 3

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. Java Remote Method Invocation Teil 1

Inhalt. Einführung RFC-Funktionsbausteine in ABAP Funktionsbausteine zum Lesen Aufruf per srfc 108

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Kap. 6 Message-Oriented Middleware (MOM)

Beispiel: JavaBeans. Enterprise JavaBeans: Server-Komponenten

Kap. 3 Verteilte Objektverwaltung

Grundlagen der Web-Entwicklung INF3172

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Business Process Management und Enterprise Service Bus

Enterprise Java Beans (EJB)

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. Java Connection Architecture Teil 3

Verteilte Systeme. Nebenläufigkeit. Prof. Dr. Oliver Haase

Abbildung 3-1: Clients und Server C+S

Evaluation of Java Messaging Middleware as a Platform for Software Agent Communication

J2EE mit Eclipse 3 und JBoss

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Kapitel WT:VI (Fortsetzung)

JDO Java Data Objects

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen

Hochschule für Angewandte Wissenschaften München Fakultät Informatik und Mathematik

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013. WebSphere MQ Teil 1

Verteilte Systeme - Überblick

Praktikum Verteilte Anwendungen

<Insert Picture Here> Einführung in SOA

CORBA. Systemprogrammierung WS

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

Etablierung serviceorientierter Architekturen mit Web Services

InQMy Application Server Flexible Softwareinfrastruktur für verteilte Anwendungen

Einsatz von Java-Komponenten in verteilten Embedded Systems

Java RMI Remote Method Invocation

Kap. 3 Verteilte Objektverwaltung

Architekturen. DB-Anwendungen: Aufgaben. Aufteilung der Funktionen. ƒ Datenbankanwendungen

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks

Programmierung von verteilten Systemen und Webanwendungen mit Java EE

Java Beans ( )

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. Java Enterprise Edition Teil 3. Enterprise Java Beans

Enterprise Java Beans

Java und XML 2. Java und XML

Einführung in die Informatik 1

ORACLE Business Components for Java (BC4J) Marco Grawunder

Message Oriented Middleware am Beispiel von XMLBlaster

Musterlösung Klausur SS 2004

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition

SOAP Simple Object Access Protocol. Dr. Reinhard Riedl Universität Zürich/Universität Rostock

Von Transaktionsmonitoren zu Applikationsservern

Clustering von Application Servern am Beispiel von JBoss 3.2

BPEL und Transaktionen

Web Services. Standards und Realisierung in Java

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Web 2.0 Software-Architekturen

J2EEKurs. J2EE eine Plattform für betriebliche Anwendungen. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany,

OSS/J als Basis für Enterprise Application Integration

Transkript:

2 Konzepte und Modelle verteilter Kommunikation Die Entwicklung von Kommunikationsanwendungen ist in den letzten Jahren aufgrund neuer Technologien immer komfortabler geworden. Vor nicht allzu langer Zeit musste man sich bei der Programmierung noch mit allen Aspekten (auch der niedrigen Schichten) der Kommunikation befassen. Heute gibt es Programmiermodelle, die dies wesentlich erleichtern und man setzt mindestens auf eine vernünftige Transportzugriffsschicht auf. Für die Entwicklung von verteilten Anwendungen kann man also meistens einen funktionierenden Transportdienst nutzen. Eine Methode der Programmierung basiert auf der Socket Schnittstelle. Dies ist eine Transportzugriffsschnittstelle, die in mehreren Sprachen implementiert ist und aus der Unix Welt kommt. Moderne Sprachen wie Java und C# stellen eine komfortable Nutzungsmöglichkeit über vordefinierte Packages (Java) oder Namespaces (C#) bereit. Sockets sind zwar die Basis für alle im Internet vorhandenen höheren Programmiermodelle, jedoch ist die Programmierung verteilter Anwendungen direkt über die Sockets Schnittstelle relativ aufwändig. Wir beschäftigen uns in diesem Buch mit komfortableren Mechanismen. Weiter fortgeschritten sind Konzepte wie RPC (Remote Procedure Call) und noch moderner sind objektorientierte Kommunikationsmechanismen wie RMI (Java Welt),.NET Remoting (Microsoft) oder CORBA (unabhängiger Standard). Ganz aktuell sind komponentenorientierte Kommunikationsparadigmen wie EJB (Enterprise Java Beans), aber auch Message orientierte Systeme sind heute weit verbreitet. Moderne Kommunikationsmechanismen werden heute vorwiegend von Middleware Systemen angeboten, die auch als Application Server bezeichnet werden. Die Art und Weise, wie man eine verteilte Anwendung programmiert, hängt von den Anforderungen ab. Die meisten verteilten Anwendungen stützen sich heute auf das Server Modell, in dem ein Serverprozess oder ggf. mehrere Serverprozesse auf Requests von s warten und diese beantworten. In diesem Fall geht die Kommunikation immer vom aus. Aber auch andere Kommunikationsparadigmen sind häufig anzutreffen. Ein anderes Modell ist die sog. Peer to Peer Kommunikation, in der zwei Anwendungsprozesse gleichberechtigt miteinander kommunizieren. Beispielsweise benötigt man in Automatisierungsanwendungen meist eine gleichberechtigte Kommunikation, in der jeder Partner zu jeder Zeit eine Nachricht (oft Telegramm), senden kann, wenn ein bestimmtes Ereignis (wie z.b. eine Palette ist an einem bestimmten Meldepunkt zum Einlagern in ein Hochregal bereit ) eintritt. Weiterführende Kommunikationsmechanismen befassen sich mit gesicherten Message Queues, transaktionsgesicherter Kommunikation mehrerer Objekte usw. 27

2 Konzepte und Modelle verteilter Kommunikation In diesem etwas umfangreicheren Kapitel wird eine Einführung in typische Softwarekonzepte und Implementierungsmöglichkeiten verteilter Anwendungssysteme gegeben. Wir beginnen mit dem Server Modell und diskutieren anschließend Varianten, mit denen sich das Server Modell implementieren lässt. Im Blickwinkel stehen verteilte Prozeduraufrufe, verteilte Objekte, verteilte Komponenten und Message Passing Systeme. Die eingeführten Modelle werden anhand von konkreten Technologie Beispielen vertieft. Zielsetzung des Kapitels Der Leser soll in diesem Kapitel einen Überblick über gängige Konzepte und Modelle für die verteilte Kommunikation erhalten und ein grundlegendes Verständnis darüber erwerben, wie man Technologien für verteilte, betriebliche Informationssysteme einsetzt. Wichtige Begriffe Synchrone und asynchrone Kommunikation, zustandslose und zustandsbehaftete Server, meldungs und auftragsbezogene Kommunikation, Server Modell, Trader, Verteilte Prozeduren, Verteilte Objekte, Verteilte Komponenten, Message Passing, Nachrichtenwarteschlangensystem, CORBA, EJB, RMI,.NET Remoting, RPC, Sun ONC. 2.1 -Server-Modell Das Server Modell ist eines der wichtigsten Softwaremodelle für verteilte Anwendungen und soll etwas ausführlicher dargestellt werden. Implementierungsüberlegungen sollen ebenfalls betrachtet werden. Das Server Modell wird gelegentlich als Hardwaremodell dargestellt: Auf der seite werden kleinere Rechner eingesetzt, auf der Serverseite meist größere Serverrechner. Trotzdem ist das Modell in erster Linie ein Softwaremodell. Im Server Modell gibt es zwei verschiedene Bausteintypen, Server und s, wobei ein Server wiederum eines anderen Servers sein kann. und Server kommunizieren über ein Request /Response Verhalten. Der Server bietet Dienste an, die der nutzt. Hierzu sendet der eine Nachricht, einen sog. Request, an den Server. Dieser bearbeitet den Request und sendet das Ergebnis zurück. In Abbildung 2 1 ist diese Art der Kommunikation skizziert, wobei ein einen Dienst eines beliebigen Anwendungsservers aufruft. Dieser nutzt zur Bearbeitung des Requests wiederum einen Datenbankserver, um bestimmte Daten anzufordern und sendet deshalb einen Request an diesen. Der Applikationsserver ist also in einer Doppelrolle. Alle Requests werden in diesem Beispiel synchron und blockierend bearbeitet. Der Aufrufer wartet auf die Antwort. Wie wir noch sehen werden, gibt es auch andere Möglichkeiten. 28

2.1 Server Modell Im Bild wird deutlich, dass es sich um eine dreischichtige Architektur handelt. Hier sind, wie wir in Kapitel 5 noch sehen werden, verschiedene Ansätze denkbar (2, 3, n schichtige Architekturen). In größeren Applikationen sind drei oder mehr Schichten üblich. Die vom Server bereitgestellten Funktionen werden auch als Services oder Dienste bezeichnet. Auch das ISO/OSI Modell verwendet den Dienstbegriff. Die Beschreibung der Dienstschnittstelle repräsentiert einen Vertrag zwischen Diensterbringer (= Server) und Dienstnutzer (= ). evtl. mit Benutzeroberfläche (Darstellung) Applikationsserver Request Auf Ergebnis warten Auf Daten warten Ergebnis zurückgeben Daten anfordern Daten zurückgeben Datenbankserver Zeit Abbildung 2 1: Beispiel einer Server Kommunikation nach (Tanenbaum 2003) Der Dienstbegriff spielt in vielen verteilten Anwendungen eine zentrale Rolle und ist neuerdings über den Begriff SOA (Service Oriented Architecture) im Rahmen von Webservices wieder sehr aktuell geworden. 2.1.1 Kommunikations- und Interaktionsformen Beim Nachrichtenaustausch unterscheidet man nach (Weber 1998) grundsätzlich zwischen synchroner und asynchroner Kommunikation. Synchron bedeutet im Zusammenhang mit der Programmierung von verteilten Anwendungen eine blockierende Kommunikation, d.h. der Sender wartet solange, bis eine Methode, die oft den Namen send (oder so ähnlich) hat, mit einem Ergebnis zurückkehrt und kann in dieser Wartezeit nichts tun. Asynchron bedeutet, dass der Sender nach dem Absenden der Nachricht mit Hilfe einer Methode send nicht blockiert und bis zum Eintreffen eines Ergebnisses andere Aufgaben erledigen kann. Die Antworten müssen dann irgendwie eingesammelt werden. Bei der asynchronen Kommunikation, hat man den Vorteil der zeitlichen Entkoppelung von Sender und Empfänger. Damit sind auch eine bessere Parallelarbeit sowie eine ereignisgesteuerte Kommunikation möglich. Von Nachteil ist, dass eine Zwischenpufferung der Nachrichten 29

2 Konzepte und Modelle verteilter Kommunikation notwendig ist. Wenn der Puffer voll wird, dann führt dies trotzdem zum Blockieren, um eine gesicherte Übertragung zu gewährleisten. Weiterhin unterscheidet man nach (Weber 1998) grundsätzlich zwischen meldungsorientierter und auftragsorientierter Kommunikation. Während die meldungsorientierte Kommunikation eine Einwegnachricht ohne Antwort ist, spricht man bei der auftragsorientierten Kommunikation von einen Request/Response Mechanismus, bei dem der Sender ein Ergebnis vom Empfänger erhält (entfernter Dienstaufruf). Synchrone und asynchrone Kommunikation lässt sich mit meldungs und auftragsorientierter Kommunikation jeweils kombinieren. Synchrone Kommunikation Request Warte auf Reply Reply Server Zurückgestellte synchrone Kommunikation Request Arbeite weiter Überprüfe periodisch das Vorliegen des Reply Reply Server Asynchrone Kommunikation Request Registriere Callback Arbeite weiter Rufe registrierte Funktion oder Event auf Server Ein-Weg- Kommunikation One-Way Request Arbeite weiter Rückantwort wird nicht benötigt Server Abbildung 2 2: Interaktionsformen nach (Bengel 2004) Auch die Art der Interaktion kann variieren. Standardmäßig wird in Implementierungen des Server Modells die synchrone Kommunikation verwendet. Es ist aber auch möglich, dass ein Request unidirektional (One Way, Ein Weg Kommunikation) bearbeitet wird, wenn keine Antwort erforderlich ist. Es kann auch sein, dass der nicht synchron, sondern asynchron auf das Ergebnis wartet und der Server den informiert, wenn er das Ergebnis bearbeitet hat. Bei der asynchronen Interaktion gibt es wiederum die Möglichkeit, dass der von Zeit zu Zeit nachfragt (polling), ob die Antwort schon da ist, oder der stellt eine Callback Routine bereit, die (z.b. von einer Middleware) dann aufgerufen wird, wenn die Antwort auf der seite angekommen ist. Die verschiedenen Arten der Interaktion sind in Abbildung 22 dargestellt (siehe auch Bengel 2004). 30

4 Konzepte, Modelle und Standards verteilter Transaktionsverarbeitung Überblick Die EJB Architektur erlaubt die Nutzung von lokalen und von globalen Transaktionen. Für lokale Transaktionen werden die Schnittstellen des jeweiligen Ressourcenmanagers benutzt (z.b. SQL Befehle über JDBC). Für globale Transaktionen benötigt man einen Transaktionsmanager, der Bestandteil der EJB Application Server Infrastruktur sein sollte. Über diesen können dann Operationen auf mehrere Ressourenmanager in einer Transaktion geklammert werden. Hier könnte sich zum Beispiel der CORBA Transaction Service (OTS) aber auch ein Transaktionsmonitor wie CICS als Basismechanismus anbieten, um einem EJB Application Server die nötigen Transaktionsdienste zur Verfügung zu stellen. Lokale Transaktionen müssen laut Standard vom EJB Server nicht über einen TM ausgeführt werden. Sie können auch direkt mit dem entsprechenden RM abgewickelt werden (vgl. Abbildung 4 35). Dies ist insbesondere dann sinnvoll, wenn es nur einen an der Transaktion beteiligten RM gibt. Der Anwendungsprogrammierer muss sich nicht um die Transaktionsprotokolle kümmern. Diese werden vom EJB Server /Container Hersteller bereitgestellt. Er übernimmt auch die Propagierung des Transaktionskontextes zwischen den beteiligten Komponenten. EJB-Container lokale Abwicklung EJBean DBMS (RM) EJBean DBMS (RM) TM Globale Transaktion Message Queue (RM) Abbildung 4 35: Abwicklung lokaler und globaler Transaktionen Für die Unterstützung von Transaktionen ist innerhalb der EJB Architektur die Java Transaction API (JTA) als grundlegende Schnittstelle bzw. als Satz von Schnittstellen vorgesehen (Sun 1999, Sun 1999b, Sun 2003, Sun 2007). Als Transaktionsmodell werden flache (im Gegensatz zu CORBA/OTS keine geschachtelten) Transaktionen unterstützt. JTS (Java Transaction Service) ist für Hersteller von EJB Application Servern gedacht, um die erforderliche Infrastruktur für die Transaktionsbehandlung zu implementieren, die EJB Spezifikation fordert allerdings nicht, dass ein EJB Container JTS einsetzen muss (Sun 1999b). Die EJB Spezifikation beschreibt drei Möglichkeiten Transaktionsgrenzen festzulegen: Der (client managed demarcation), der Container (container managed demarcation) oder die Bean (bean managed demarcation) selbst setzt diese über 290

4.5 Transaktionsunterstützung in Middlewaretechnologien entsprechende Aufrufe der Methoden begin, commit bzw. rollback an einem JTA Interface ab. Für eine Session Bean muss festgelegt werden, ob sie entweder container managed oder bean managed Transactions unterstützt, beides ist nicht möglich. Entity Beans können nur container managed Transactions unterstützen. Beispielszenario 1: Betrachten wir eine Transaktion, die ein durch Aufruf einer Methode der Bean B1 initiiert, die wiederum eine Methode der Bean B2 aufruft. Bean B1 ruft Änderungsoperationen in zwei Datenbanken auf (DBMS1 und DBMS2), Bean B2 verändert Daten in der Datenbank DBMS3. Der EJB Container hat die Aufgabe, die drei DBMS in die Transaktion zu involvieren, also den Transaktionskontext über einen Transaktionsmanager, der in der Infrastruktur verfügbar sein muss, zu propagieren. EJB-Container update DBMS1 Bean B 1 update Bean B 2 update DBMS2 Propagation und 2PC TM DBMS3 Abbildung 4 36: EJB Transaktion über mehrere Beans in einem EJB Container Am Ende der Transaktion muss er die Commit Behandlung über den Transaktionsmanager durchführen. Die Abbildung 4 36 verdeutlicht das Szenario. Der EJB Container führt ein 2PC Protokoll mit den RMs aus, wenn die Transaktion beendet werden soll. Je nachdem, welche Komponente die Transaktionsgrenzen setzt (, EJBean oder Container) wird die Transaktion entweder aktiv vom bzw. der Enterprise Bean beendet oder aber der Container leitet implizit am Ende der Requestbearbeitung und vor dem Senden des Ergebnisses an den die Commit Behandlung ein. Im letzteren Fall passiert praktisch das ganze Transaktions Handling behind the scenes, ohne dass der und der Bean Programmierer dies explizit mitbekommen. Beispielszenario 2: In diesem Szenario ruft ein auch eine Methode einer Bean B1, die wiederum eine Methode der Bean B2 aufruft. Bean B2 befindet sich aber in einem anderen EJB Container eines zweiten EJB Servers. Beide Methoden verändern Daten in unterschiedlichen Datenbanken. Am Ende der Transaktion ist eine Abstimmung zwischen den Transaktionsmanagern der beiden EJB Server notwendig, die auch für die Propagierung des Transaktionskontextes sorgen müssen. Im EJB Standard bzw. der zuständigen JTS Spezifikation ist offen gelassen, über welches Protokoll die verteilten Transaktionsmanager untereinander zum Zwecke 291

4 Konzepte, Modelle und Standards verteilter Transaktionsverarbeitung der Kontextpropagierung und Transaktionskoordination kommunizieren. In der JEE Spezifikation wird hierfür IIOP empfohlen. Man setzt hier eine funktionsfähige Umgebung wie sie in CORBA/OTS beschrieben ist, voraus. Dies ist aber in der Praxis eine nicht unerhebliche Lücke, da EJB Server unterschiedlicher Hersteller sich nur schwer auf ein gemeinsames Protokoll einigen können. Meist funktioniert eine über Rechnergrenzen hinweg verteilte Transaktion daher (wenn überhaupt) nur in einer homogenen EJB Server Landschaft eines Herstellers. EJB-Container1 update DBMS1 Bean B1 Propagation und 2PC TM1 EJB-Container2 Bean B2 update DBMS2 TM2 Abbildung 4 37: EJB Transaktion über mehrere EJB Container Folgende Regeln gelten für die verschiedenen Arten von Enterprise Beans (siehe Abbildung 4 38): Session Beans (stateful und stateless) und message driven Beans dürfen sowohl bean als auch container managed sein. Für jede Bean muss aber eine Entscheidung getroffen werden, die für alle Methoden gilt. Eine Mischung ist nicht zulässig. Entity Beans können ausschließlich über die Variante container managed in eine Transaktion eingebunden werden. Bei zustandsbehafteten Session Beans ist es möglich, dass mehrere Methodenaufrufe in einer Transaktion ausgeführt werden können. Die Session Bean bleibt solange im Zustand Bereit in TA bis die Transaktion zu Ende ist und darf auch nicht deaktiviert werden. 292

4.5 Transaktionsunterstützung in Middlewaretechnologien Entity Bean Session Bean Messagedriven Bean Container-managed Transactions Bean-managed Transactions Abbildung 4 38: Möglichkeiten der Transaktionskontrolle bei EJB Betrachten wir den etwas vereinfachten Zustandsautomaten einer zustandsbehafteten Session Bean in Abbildung 4 39, so ist zu erkennen, dass eine Session Bean, die sich in einer Transaktion befindet, keinen Zustandsübergang zum Zustand passiviert hat. Nicht existent ejbremove() ejbpassivate() Passiviert Class.newInstance() setsessioncontext() ejbcreate() Bereit ejbactivate() Systemausnahme begin() Methodenaufrufe commit(), rollback() Bereit in TA Methodenaufrufe Abbildung 4 39: Zustandsautomat einer zustandsbehafteten Session Bean Nach dieser Einführung soll im Weiteren auf die Standardschnittstellen JTA und JTS eingegangen werden. Anschließend werden die verschiedenen Möglichkeiten der Transaktionsunterstützung bei EJB näher besprochen. 4.5.2 Java Transaction API (JTA) Das Java Transaction API (JTA) liefert höherwertige Transaktionsdienste, die aus drei Teilen bestehen (Sun 1999a): 293

4 Konzepte, Modelle und Standards verteilter Transaktionsverarbeitung Eine Schnittstelle für Anwendungsprogrammierer, mit denen diese Transaktionsgrenzen setzen können. Sie enthält die klassischen Methoden begin, commit und rollback. Ein Java Mapping für das standardisierte XA Protokoll der Open Group für die Teilnahme an globalen Transaktionen, die von einem Transaktionsmanager koordiniert werden. Eine Schnittstelle für einen Application Server, um mit einem Transaktionsmanager zu kommunizieren. Diese Schnittstelle ist für die Transaktionsabwicklung durch den Application Server (bzw. EJB Container) notwendig und wird für container managed Transactions verwendet. JTA lehnt sich stark an den XA Standard an. Das JTA Transaktionsmodell sieht die gleichen Komponenten wie das XA Modell vor (AP, TM, RM, CRM) und ergänzt die Rolle des Application Servers. JTA wird vom Hersteller eines EJB Produktes implementiert. JTA definiert aber keine Kommunikationsmechanismen für die Progagierung von Transaktionen und für die verteilte Transaktionskoordination. Hier wird auf den JTS Standard verwiesen. Wie in Abbildung 4 40 zu erkennen ist, sind in JTA im Wesentlichen drei Schnittstellen beschrieben. Dies sind die Interfaces UserTransaction, TransactionManager und XAResource. Über das Interface UserTransaction kommuniziert eine Anwendung (AP) mit dem Transaktionsmanager. Das Interface TransactionManager wird für die Kontextpropagierung und Transaktionskoordination zwischen Application Server und Transaktionsmanager verwendet. Über das Interface XAResource wird das Transaktionshandling zwischen Ressourcenmanagern und einem Transaktionsmanager (Registrierung 23 von RMs, Kontextpropagierung und Koordination) geregelt. Die Implementierung des Transaktionsmanagers sowie die Kommunikationsmechanismen werden vorausgesetzt. Wie unschwer zu erkennen ist, setzt das JTA Modell auf die XA Konzepte auf. In Richtung RM wird gemäß dem JEE Standard entweder über JDBC (DBMS Interface) oder JMS (Interface zu Message Systemen) kommuniziert. Ein AP entspricht entweder einer serverseitigen Enterprise Bean, was der Standardfall ist, oder aber einer anwendung, welche die Transaktionsgrenzen über ein höherwertiges Interface selbst definiert. Der Protokollstack zur Kommunikation mit anderen Instanzen ist nicht näher festgelegt. 23 Das hier nicht weiter diskutierte Subinterface Transaction stellt für die Bekanntmachung der Beteilung an einer Transaktion hier z.b. die Methode enlist() zur Verfügung, die vom RM aufgerufen wird. 294

4.5 Transaktionsunterstützung in Middlewaretechnologien AP EJB AS JDBC, JMS RM JTA UserTransaction JTA Transaction Manager JTA XAResource TM ("low-level" Transaktions-Service- Implemenentierung z.b. mit OTS) CRM Inbound Transactions Protokollstack protokollspezifische Kommunikation Outbound Transactions AP AS CRM JTA RM TM Application Program Application Server Communication Resource Manager Java Transaction API Resource Manager Transaction Manager Abbildung 4 40: Komponenten und Schnittstellen des JTA und des JTS Modells managed Transactions: Bei der Variante client managed benutzt der EJB zur Begrenzung der Transaktionen das JTA Interface javax.transaction. UserTransaction. Anzumerken ist, dass die Verfügbarkeit der Schnittstelle in der EJB Spezifikation nicht obligatorisch geregelt ist. Der Standard schreibt die Unterstützung also nicht zwingend vor. Der Programmierer setzt in diesem Fall die Transaktionsgrenzen so wie er es für richtig hält und kann damit wie dies das Szenario aus Abbildung 4 41 zeigt auch Methoden übergreifende Transaktionen formulieren. 295