Fachhochschule Wiesbaden. Vortrag: Teil 1. EJB- Timer. Teil 2. Transaktionen. Version: 1.0



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

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

bizsoft Rechner (Server) Wechsel

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

QR-FUNKTION. Informationen über zu erledigende Aufgaben an das Reinigungspersonal senden.

SANDBOXIE konfigurieren

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Upgrade-Leitfaden. Apparo Fast Edit 1 / 7

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Lizenzen auschecken. Was ist zu tun?

How to do? Projekte - Zeiterfassung

Software Engineering Klassendiagramme Assoziationen

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Der lokale und verteilte Fall

OP-LOG

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

HANDBUCH ÜBERNAHME BANKLEITZAHLEN

Benutzerverwaltung Business- & Company-Paket

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

SEP 114. Design by Contract

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Microsoft Update Windows Update

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

FlowFact Alle Versionen

2. Word-Dokumente verwalten

Tag 4 Inhaltsverzeichnis

HOWTO Update von MRG1 auf MRG2 bei gleichzeitigem Update auf Magento CE 1.4 / Magento EE 1.8

Tevalo Handbuch v 1.1 vom

Benachrichtigungsmöglichkeiten in SMC 2.6

Updatehinweise für die Version forma 5.5.5

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Live Update (Auto Update)

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Tag 4 Inhaltsverzeichnis

EasyWk DAS Schwimmwettkampfprogramm

Installation SQL- Server 2012 Single Node

Vorgehensweise bei der Installation Bob50SQL für einen unabhängigen PC.

Backup der Progress Datenbank

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand:

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Durchführung der Datenübernahme nach Reisekosten 2011

SharePoint Demonstration

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Adami CRM - Outlook Replikation User Dokumentation

MCRServlet Table of contents

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Wissenswertes über LiveUpdate

SharePoint Workspace 2010 Installieren & Konfigurieren

Dokumentation zum Spielserver der Software Challenge

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Objektorientierte Programmierung

Objektorientierte Programmierung

Serviceanweisung Austausch Globalsign Ausstellerzertifikate

Speicher in der Cloud

Success! Bestellausgabe

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Schedulingund Thread-Ausführer

Nutzung von GiS BasePac 8 im Netzwerk

GS-Programme 2015 Allgemeines Zentralupdate

CADEMIA: Einrichtung Ihres Computers unter Windows

Neue Funktionen im GUI für PC-DMIS V3.x 4.x Seite 1 von 8

3. Stored Procedures und PL/SQL

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Konfiguration des ewon GSM Modems Kurzbeschreibung zum Aufbau einer GSM Verbindung

Einfache und effiziente Zusammenarbeit in der Cloud. EASY-PM Office Add-Ins Handbuch

DOKUMENTATION VOGELZUCHT 2015 PLUS

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Online Banking System

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Programmieren in Java

Avira Server Security Produktupdates. Best Practice

telpho10 Update 2.1.6

Firewalls für Lexware Info Service konfigurieren

Übungen zur Vorlesung. Datenbanken I

Übung: Verwendung von Java-Threads

Transkript:

Frankfurt Wiesbaden am Main 07.01.2009 05.12.2008 Alaoui Soulimani, Achraf & Alaoui El Haddajy, Soulimani, Hicham Achraf Fachhochschule Wiesbaden Vortrag: Teil 1. EJB- Timer Teil 2. Transaktionen Version: 1.0

Seite 2 EJB Timer Teil 1: EJB Timer

Seite 3 Inhaltsverzeichnis EJB Timer - 1. Ejb-Timer-Grundbegriffe 2. Timer Service - Architektur 3. Timer Service - Funktionalität 4. Timer Service - Ablauf 5. Das Scheduling System 6. Timer Service API 7. Timer Service - Anwendung 8. Timer Service und Transaktionen 9. Beispiele 10.Timer Service - Nachteile 11.Fazit

Seite 4 EJB Timer: Ejb-Timer- Grundbegriffe EJB-Timer ist ein Service von jedem Java EE-konforme Application Server. Sind Nutzbar durch Stateless Session Beans, Message Driven Beans, Entity Beans via Primary Key benachrichtigen via Callback Methoden _ in Intervallen - Interval-Based _ zu einem festen Zeitpunkt - Single-Action

Seite 5 EJB Timer EJB-Timer ist ähnlich wie "java.util.timer" in irgendeiner Form, aber der Unterschied ist, dass EJB Zeit wohnt in der "javax.ejb.timer" pakcage, und jede EJB Timer fall ist beharrlich durch den Application Server. sind persistent und überleben somit einen Server Absturz Jedes Mal, wenn der Timer abläuft, wird die Methode ejbtimeout() der zugehörigen Bean vom EJB-Container aufgerufen. Die Timeout-Methode enthält die Business-Logik, der für die Zeitüberschreitung verantwortlich ist.

Seite 6 EJB Timer : Timer Service Architektur Bean-Instanzen nutzen den Timer Service über das Interface Timerservice. Der Timer Service selber ist ein Dienst des J2EE-Applikationsservers. Installierte Timer sind persistent

Seite 7 EJB Timer : Timer Service (1) Funktionalität

Seite 8 EJB Timer : Timer Service (2) Ablauf

Seite 9 EJB Timer : Das Scheduling System Ermöglicht zeitgesteuerte und automatische Ausführung von Geschäftsprozessen z.b. nächtliche Erstellung von Unternehmensreports. Scheduling-Systeme z.b. bei Unix: cron Bei J2EE ist es der Time Service

Seite 10 EJB Timer : Timer Service API javax.ejb.timedobject javax.ejb.timerservice javax.ejb.timer

Seite 11 EJB Timer: javax.ejb.timedobject Interface das vom Bean implementiert werden muss. public interface TimedObject { void ejbtimeout(timer timer); } Bean-Objekt muss Interface-Methode ejbtimeout(timer t) implementieren. ejbtimeout wird von TimerService aufgerufen, wenn Zeit abgelaufen ist.

Seite 12 EJB Timer : javax.ejb.timerservice (1) Interface, das das Bean benuzt um den Time Service zu kontaktieren. Interface ermöglicht den Zugriff auf den Timer Service Referenz auf den TimerService erhält man über den EJBContext und der Methode gettimerservice().

Seite 13 EJB Timer : javax.ejb.timerservice (2) public interface TimerService { Timer createtimer(long d,serializable info); Timer createtimer(long d, long interval, Serializable info); Timer createtimer(date expiration, Serializable info); Timer createtimer(date ex, long interval, Serializable info); Collection gettimers(); } // Alle Methoden werfen IllegalArgumentException, // IllegalStateException, EJBException

Seite 14 EJB Timer : javax.ejb.timerservice (3) Obwohl Zeitintervalle im Timer-Service in Millisekunden angegeben werden, wird hier lediglich der ungefähre Ausführzeitpunkt angegeben. => JVM ist nicht echzeitfähig. Es können serialisierbare Object beim create mitgegeben werden, die beim Aufruf der ejbtimeout()-methode mitgegeben werden. gettimers() liefert alle Timer, die für ein bestimmtest Bean registriert wurden.

Seite 15 EJB Timer : javax.ejb.timer Interface um den eigentlichen Zeitthread zu kontaktieren. Methoden für ejb.timer : void cancel(): Timer kann beendet werden long gettimeremaining(): Liefert Restzeit Date getnexttimeout(): Liefert Restzeit Serializable getinfo():liefert Info-Objekt TimerHandle gethandle(): Liefert Handel auf Timer- Object.

EJB Timer: Timer Service Anwendung (1) Seite 16

Seite 17 EJB Timer : Timer Service Anwendung (1.a) Stateless Session Beans und Message-driven Beans haben keinen Zustand Daher verwendet der Timer Service beliebige Instanzen Typische Aufgabe: Batch-Jobs Beziehen sich auf viele oder keine Entitäten z.b. Aufträge, die nachts abgearbeitet werden oder Versendung von Reports

EJB Timer: Timer Service Anwendung (2) Seite 18

Seite 19 EJB Timer : Timer Service Anwendung (2.b) Entity Beans beziehen sich auf fachliche Entitäten Daher verwendet der Timer Service eine bestimmte Instanz bzw. eine bestimmte fachliche Entität Aufgabe bezieht sich auf fachliche Entität z.b. automatischer Kauf bzw. Verkauf von Wertpapieren Wertpapier überprüft periodisch seinen Kurs und platziert ggf. Order

Seite 20 EJB Timer: Timer Service und Transaktionen (1) Timer-Objekte können innerhalb von Transaktionen erzeugt werden. Nach einem Rollback ist das Timer-Objekt nicht mehr existent. Für die ejbtimeout()- Methode können auch Transaktionsattribute gesetzt werden.

Seite 21 EJB Timer: Timer Service und Transaktionen (2) Erzeugung und Löschung von Timern innerhalb des jeweiligen Transaktionskontextes d.h. erzeugter Timer nach Rollback nicht mehr vorhanden und gelöschter Timer nach Rollback wieder da. Für ejbtimeout() kann ein beliebiges Transaktionsattribut angegeben werden wie bei jeder anderen Methode einer EJB.

Seite 22 EJB Timer : Timer Service und EJB-Typen TimedObject- Interface kann benutzt werden bei: -Stateless Session Beans -Entity Beans -Message- driven Beans

Seite 23 EJB Timer: Timer Service Beispiel- Timer erstellen /** Timer auf 10 Tage ab aktuelles Datum setzen **/ Calendar time = Calendar.getInstance(); time. time.add(calendar.date, 30); Date date = time.gettime(); TimerService timerservice = ejbcontext.gettimerservice(); timerservice.createtimer( date, null);

Seite 24 EJB Timer: Timer Service Beispiel Timer nutzen public void ejbtimeout(timer timer){ cancelorder(); } public void cancelorder(){... // do something canceltimer(); } private void canceltimer(){ TimerService ts = ejbcntxt.gettimerservice(); Iterator timers = ts.gettimers().iterator(); if (timers.hasnext()) { Timer timer = (Timer) timers.next(); timer.cancel(); } }...

Seite 25 EJB Timer: Timer Service Nachteile Keine deklarative Konfiguration muss innerhalb der Beaninstanz konfiguriert werden Kein Gruppenmanagement von Timern möglich Es gibt keinen Weg alle aktiven Timer im System Aufzufinden Nicht zu vergleichen mit cron Jobs

Seite 26 EJB Timer Fazit: Entwickler können die Vorteile der EJB-Timer-Services für den Aufbau robuster Scheduling- Anwendungen. Eines ist daran zu denken, dass, um ehrlich zu sein, Entwickler werden ermutigt, nicht davon abhängen, Timer-Services für den Aufbau von Echtzeit-Anwendungen (Mission kritische Anwendungen), wie der Ablauf Mai nicht passieren, genau zu jeder Zeit aufgrund bestimmter Faktoren wie die Netzwerk- Latenz, Zugrunde liegenden Umsetzung usw. Obwohl, die Timer-Services-API nicht erschöpfend ist, deswegen wird davon ausgegangen, dass mehr und neue Funktionalitäten werden in den nächsten Spezifikation der EJB.

Seite 27 EJB Timer: Quellen der Abbildungen 2007 Stephan Metzler : EJB 3 professionell, dpunkt.verlag, ISBN 978-3-89864-431-0 Enterprise JavaBeans 3.0 mit Eclipse und JBoss Enterprise JavaBeans -Neuerungen der Gegenwart (EJB 2.1) und Zukunft (EJB 3.0) http://www.informatik.fhfurtwangen.de/~reich/app Server/index.htmlEJB

Seite 28 Transaktionen Teil 2: Transaktionen

Seite 29 Inhaltsverzeichnis Transaktionen - 1. Grundbegriff der Transaktion 2. Container- Managed Transaktion 3. Bean- Managed Transaktion 4. Stufe der Isolation 5. Aktualisierung mehrfacher Datenbanken 6. Transaktionen und Locking

Seite 30 Transaktionen: Grundbegriff der Transaktion (1) Was ist eine Transaktion? Mit Transaktionen im engeren technischen Sinne ist gemeint, dass mehrere Arbeitsschritte zusammengefasst werden und entweder alle oder keine ausgeführt werden. (Alles-oder-nichts-Prinzip). Transaktion ist eine unteilbare Einheit, es wird also alle Schritte oder gar keine ausgeführt.

Seite 31 Transaktionen: Grundbegriff der Transaktion (2) Eine Transaktion hat vier grundlegende Eigenschaften: das sog. ACID -Prinzip. 1. Atomarität bzw. Unteilbarkeit (Atomicity): Alles-oder-nichts-Prinzip 2. Konsistenz (Consistency): Wenn das System vor der Transaktion in einem gültigen Zustand war, dann ist es dies auch nachher 3. Isolierung (Isolation): Transaktionen laufen ungestört von anderen Transaktionen ab (es können nicht dieselben Daten von verschiedenen Transaktionen bearbeitet werden) 4. Dauerhaftigkeit (Durability): Mit Commit abgeschlossene Änderungen sind persistent

Seite 32 Transaktionen : Container managed Transactions(1) Die Container-Managed Transaction funktioniert für alle EJB- Typen (session, entity, oder message-driven). kontrolliert die Grenze der Transaktion. Vereinfacht das Programm. Fängt eine Transaktion an. Kurz bevor eine EJB Methode beginnt. Beendet der Container die Transaktion, Kurz vor der Beendung der EJB Methode, Jede Methode kann mit einer einzelnen Transaktion verbunden sein.

Seite 33 Transaktionen : Container managed Transactions(2) Das Transaktionsverhalten wird für jede einzelne Methode im Deployment- Deskriptor durch ein Attribut angegeben. Dieses Attribut kann folgende Werte annehmen: Required: Falls bereits vorher eine Transaktion begonnen wurde, wird sie fortgesetzt. Falls noch keine Transaktion aktiv ist, wird eine neue gestartet. RequiresNew: Unabhängig davon, ob bereits eine Transaktion aktiv ist, wird immer eine neue eigene Transaktion gestartet.

Seite 34 Transaktionen : Container managed Transactions(3) Supports: Falls bereits eine Transaktion aktiv ist, wird sie verwendet. Ansonsten wird keine Transaktion verwendet. NotSupported: Die Methode wird immer ohne Transaktion ausgeführt, auch wenn bereits vorher eine Transaktion gestartet wurde. Mandatory: Es muss bereits eine Transaktion aktiv sein. Sonst wird eine Exception geworfen.

Seite 35 Transaktionen : Container managed Transactions(4) Never: Es darf keine Transaktion aktiv sein. Sonst wird eine Exception geworfen. Nested: Eine geschachtelte Transaktion wird gestartet. Diese Option wird meistens nicht unterstützt.

Seite 36 Transaktionen : Container managed Transactions(5) Beispiel:

Seite 37 Transaktionen : Container managed Transactions(5) Einstellung der Eigenschaften: werden im deployment descriptor gespeichert, können geändert. (enterprise bean creation, application assembly, und deployment). sollen bei der Herstellung der EJB spezifiziert werden. können für die gesamte EJB oder für einzelne Methoden spezifiziert werden. Wenn die Eigenschaften zwischen Methode und EJB unterschiedlich sind, ist die Eigenschaft der Methode vorrangig.

Seite 38 Transaktionen : Container managed Transactions(6) Seesion Beans benötigen die Eigenschaft für Business Methode, aber können mit Create Methode nicht verwendet werden. Entity Beans benötigen die Eigenschaft für Business, Create, Remove, und Finder Methode. Message-Driven Beans benötigen entweder Required oder NotSupported für die onmessage Methode.

Seite 39 Transaktionen : Container managed Transactions(7) Rollback einer Container-Managed Transaction: Falls eine SystemException passiert, macht der Container automatisch ein Rollback. Falls eine ApplicationException passiert, macht der Container durch setrollbackonly Methode vom EJBContext interface einen Rollback der Transaktion

Seite 40 Transaktionen : Container managed Transactions(8) Beispiel: public void transfertosaving(double amount) throws InsufficientBalanceException { checkingbalance -= amount; savingbalance += amount; try { updatechecking(checkingbalance); if (checkingbalance < 0.00) { context.setrollbackonly(); throw new InsufficientBalanceException(); } updatesaving(savingbalance); } catch (SQLException ex) { throw new EJBException ("Transaction failed due to SQLException: " + ex.getmessage()); } }

Seite 41 Transaktionen : Container managed Transactions(9) Rollback einer Container-Managed Transaction: Nur in Entity Beans kann der Container alle Änderungen vom instance variable durch die ejbload Methode zurückstellen. Session Beans müssen alle Änderungen vom instance variable durch Implementierung des Session Synchronisation interfaces zurückstellen.

Seite 42 Transaktionen : Container managed Transactions(10) Synchronisation des Instanzen Variables von Session Bean Es gibt drei Session Synchronisations Methoden: 1. afterbegin 2. beforecompletion 3. aftercompletion

Seite 43 Transaktionen : Container managed Transactions(11) Die afterbegin Methode informiert die Bean, dass eine neue Transaktion angefangen hat Läuft vor der Business Methode lädt Instanz variable in der Datenbank. public void afterbegin() { System.out.println("afterBegin()"); try { checkingbalance = selectchecking(); savingbalance = selectsaving(); } catch (SQLException ex) { throw new EJBException("afterBegin Exception: " + ex.getmessage()); } }

Seite 44 Transaktionen : Container managed Transactions(12) Die beforecompletion Methode ist die letzte Chance, damit Session Bean die Transaktion durch setrollbackonly Methode zurückrollt und die Datenbank mit Instanz variable zu aktualisieren. Die aftercompletion Methode zeigt an, ob die Transaktion erfolgreich ausgeführt wird. Session Bean kann durch diese Methode Instanz variable von der Datenbank aktualisieren.

Seite 45 Transaktionen : Container managed Transactions(13) Beispiel aftercompletion Methode : public void aftercompletion(boolean committed) { System.out.println("afterCompletion: " + committed); if (committed == false) { try { checkingbalance = selectchecking(); savingbalance = selectsaving(); } catch (SQLException ex) { throw new EJBException("afterCompletion SQLException: " + ex.getmessage()); } } }

Seite 46 Transaktionen : Container managed Transactions(14) Die unerlaubten Methoden der CMT : Die commit, setautocommit, und rollback Methoden von der java.sql.connection Die getusertransaction Methode vom javax.ejb.ejbcontext. Alle Methoden von der javax.transaction.usertransaction

Seite 47 Transaktionen : Bean-Managed Transaction (1) Der Vorteil der Bean-Managed Transaction ist, dass eine Methode mehr Transaktionen beginnen oder beenden kann. Beispiel: Als nächstes werden unterschiedliche Transaktionen nach verschiedenen Bedingungen beginnen oder beenden.

Transaktionen : Bean-Managed Transaction (2) begin transaction... update table-a... if (condition-x) commit transaction // Nach verschiedenen Bedingungen // beginnt oder beendet die Methode // unterschiedliche Transaktion else if (condition-y) update table-b commit transaction else rollback transaction begin transaction update table-c commit transaction Seite 48

Seite 49 Transaktionen: Bean-Managed Transaction (3) Es gibt Zwei Arten von Bean-Managed Transaction: JDBC Transaction JTA Transaction

Seite 50 Transaktionen: Bean-Managed Transaction (4) JDBC Transaction: wird vom Transactionmanager des DBMS kontrolliert. Verwendet die commit und rollback Methode von der java.sql.connection.

Transaktionen: Bean-Managed Transaction (5) Beispiel: public void ship (String productid, String orderid, int quantity) { try { makeconnection(); // Methode vom Connection Interface con.setautocommit(false);// Nicht jede SQL Statement automatisch eintragen updateorderitem(productid, orderid); updateinventory(productid, quantity); con.commit(); } catch (Exception ex) { try { con.rollback(); throw new EJBException("Transaction failed: " +ex.getmessage()); } catch (SQLException sqx) { throw new EJBException("Rollback failed: " + sqx.getmessage()); } } finally { releaseconnection(); } } Seite 51

Seite 52 Transaktionen: Bean-Managed Transaction (6) JTA Transaction: JTA ist die Abkürzung für die Java Transaction API. Diese API erlaubt den Transaction-Manager die Grenze der Transaktion zu kontrollieren. Das Application Server implementiert den Transactionmanager mit dem Java Transaction Service (JTS). Die JTA Methode ruft die JTS Methode hervor. JTA Transaction kann sich über die Aktualisierungen für die mehrfachen Datenbanken der unterschiedene Anbiete erstrecken.

Seite 53 Transaktionen: Bean-Managed Transaction (7) Transactionsmanager stellt Dienst- und Verwaltungsfunktionalitäten zur Verfügung, welche benötigt werden, um Transaktionsgrenzen zu steuern, Transaktion- Ressourcen zu verwalten und die Verarbeitung von Synchronisation- Objekten sowie Propagation des Transaktionskontextes zu erlauben.

Seite 54 Transaktionen: Bean-Managed Transaction (8) Zusammenfassung der Transaktion Optionen für f Enterprise Bean Die Entity Bean kann nur Container-Managed Transaction verwenden. Die Session Bean und die Message-Driven Bean können sowohl Container- Managed Transaction als auch die Bean-Managed Transaktion inklusiv JTA und JDBC verwenden.

Seite 55 Transaktionen: Stufe der Isolation (1) Wenn Transaktionen dem "ACID"- Prinzip entsprechen sollen, müssen sie serialisiert nacheinander durchgeführt werden. Aus Performance-Gründen wird ein niedrigerer "Transaktion Isolation Level" eingestellt. Das kann zu folgenden Fehlern führen: Dirty Read Nonrepeatable Read (Stale Data) Phantom Read

Seite 56 Transaktionen : Stufe der Isolation (2) In Datenbanken können verschiedene so genannte "Transaktion Isolation Level" eingestellt werden, um den besten Kompromiss zwischen Isolation und Performance vorzugeben. Nachstehende "Transaktion Isolation Level" sind in ANSI- SQL2 definiert:

Seite 57 Transaktionen : Stufe der Isolation (3) 1. Read Uncommitted: Geringste Isolation, höchste Performance, es können Dirty Reads, Nonrepeatable Reads und Phantom Reads auftreten 2. Read Committed: Es gibt keine Dirty Reads mehr, aber es gibt weiterhin Nonrepeatable Reads und Phantom Reads 3. Repeatable Read: Keine Dirty Reads und keine Nonrepeatable Reads, aber weiterhin Phantom Reads 4. Serializable: Keine Dirty Reads, keine Nonrepeatable Reads und keine Phantom Reads, höchste Isolation, geringste Performance

Seite 58 Transaktionen : Veränderung mehrfacher DB (1) J2EE Transaction Manager kontrolliert alle EJB Transaktionen außer JDBC Transaction und lässt eine EJB mehrfache Datenbanken innerhalb einer Transaktion aktualisieren.

Seite 59 Transaktionen : Veränderung mehrfacher DB (2) Session EJB und Servlet können durch JDBC Transaktion auf die Einzelne Datenbank zugreifen. EJB kann durch Transactionmanager, Transaktion Manager durch Resource Manager, auf die mehrfachen Datenbanken indirekt zugreifen. Es gilt für einzeln J2EE Server und mehrfache J2EE Server.

Seite 60 Transaktionen : Veränderung mehrfacher DB (3) Der Client ruft eine Business Methode in Bean A. Die Methode beginnt eine Transaktion, aktualisiert Datenbanken X und Y, und ruft eine Business Methode in Bean B. Die Methode aktualisiert Datenbank Z innerhalb dieser Transaktion. So werden alle Datenbanken oder gar keine aktualisiert.

Seite 61 Transaktionen: Veränderung mehrfacher DB (4) Der Client ruft eine Business Methode in Bean A. Die Methode beginnt eine Transaktion, aktualisiert Datenbanken X, und ruft eine Business Methode in Bean B. Die Methode aktualisiert Datenbank Y innerhalb dieser Transaktion, die von Transaktion Manager in erst J2EE Server kontrolliert wird. So werden alle Datenbanken oder gar keine aktualisiert.

Seite 62 Transaktionen: Transaktionen und Locking (1) Long Transaktion und Sperrstrategien Damit die Anwendung von mehreren Benutzern parallel verwendet werden kann, ist eine Strategie erforderlich, die verhindert, dass die Daten gegenseitig überschrieben werden. In diesem Zusammenhang wird der Begriff Long Transaktion verwendet.

Seite 63 Transaktionen: Transaktionen und Locking (2) Mit Long Transaktion kann eine einzelne zeitlich lange Transaktion gemeint sein, bei der das Lesen, Bearbeiten und Speichern der Daten innerhalb einer einzigen technischen Transaktion stattfindet. Andererseits wird Long Transaktion auch verwendet, wenn zwei getrennte Datenbanktransaktionen als eine einzige logische Transaktion erscheinen sollen (auch Application Transaktion genannt).

Seite 64 Transaktionen: Transaktionen und Locking (3) Pessimistic Locking Während eines Prozesses wird der Datensatz für andere Zugriffe gesperrt. Anders als optimistic Locking kann sich datenbanktechnisch realisiertes pessimistic Locking nicht über zwei getrennte Datenbank-Transaktionen erstrecken, sondern gilt nur innerhalb einer Transaktion

Seite 65 Transaktionen: Transaktionen und Locking (4) Optimistic Locking Während der Bearbeitung zwischen zwei Transaktionen wird der Datensatz nicht für andere Zugriffe blockiert, aber vor dem späteren Schreibversuch wird überprüft, ob der Datensatz noch aktuell ist.

Seite 66 Ende Vielen Dank für f r Ihre Aufmerksamkeit!