Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Verteilte Transaktionen mit EJBs und JDBC 2.0

Ähnliche Präsentationen


Präsentation zum Thema: "Verteilte Transaktionen mit EJBs und JDBC 2.0"—  Präsentation transkript:

1 Verteilte Transaktionen mit EJBs und JDBC 2.0
Oder, Java gets paranoid ! Richard Bourke

2 Agenda Verteilte Transaktionen und Object Transaktion Monitor
JDBC 2.0 Einführung Enterprise Java Beans in Zusammenhang mit JDBC 2.0 NOTIZEN ___________________________________ ___________________________________ ___________________________________

3 Was sind Verteilte Transaktionen ?
Transaktionen auf mehrere, auch heterogenen Datenbanken Alle beteiligte Datenbanken sind immer in einem konsistenten Zustand Früher immer von einem Transaktions-Monitor gesteuert Unabdingbar für unternehmens- kritische Applikationen XA, 2 Phase-Commit, Long Transaction sind (fast) Synonyme EJB Server DBMS 1 Java Virtual Machine Java Applet DBMS 2 RM I 2PC NOTIZEN ___________________________________ ___________________________________ ___________________________________

4 Arten von Transaktionsmonitore
Proprietär Prozedurale Interfaces zu Sprachen wie C, C++, Cobol Verbindungen zu Datenbanken ebenso proprietär Object Transaction Monitor (OTM) Basiert auf Corba Transaction Service / Microsoft DCOM OO Interfaces möglich Verbindung zu Datenbanken noch proprietär Enterprise Java Beans Grafische integration in OO Entwicklungsumgebungen Standardisierte Interfaces zu Datenbanken NOTIZEN ___________________________________ ___________________________________ ___________________________________

5 Enterprise Java Beans NOTIZEN
___________________________________ ___________________________________ ___________________________________

6 Java 2 Platform Standard Edition Enterprise Edition
beinhaltet JDBC 2.0 (core plus extensions) Enterprise Edition Enterprise Java Beans 1.1 Java Transaction API (JTA) Java Servlets Java Server Pages Compatibility Tests ( in etwa 100% Pure Java für Application Servers) NOTIZEN ___________________________________ ___________________________________ ___________________________________

7 Was ist JDBC? Das Datenbank-Connectivity API für Java
Low-Level / wenige Abstraktion High-level Komponenten Embedded SQL (SQLJ) Object Relational Mapping Werkzeuge Enterprise JavaBeansTM Plattformen 4 Arten von JDBC Treibern NOTIZEN ___________________________________ ___________________________________ ___________________________________

8 DataDirect SequeLink Java Edition
Ein universeller JDBC-Treiber für alle Datenbanken, dadurch maximale DB-Unabhängigkeit Kombiniert Performance von Typ 4-Lösung mit Flexibilität von Typ 3 Beste Möglichkeit für Java/OS 390 Einsetzbar in beliebigen Java-Konfigurationen, da 100% Pure Java zertifiziert Höchste Zuverlässigkeit und Stabilität, da auf bewährter SequeLink-Plattform basierend NOTIZEN ___________________________________ ___________________________________ ___________________________________

9 JDBC 2.0 Neue Features JDBC Core (java.sql)
Scrollable-Cursors Unterstützung Neue Datentypen Batch Updates JDBC Standard Extension (javax.sql) Connection Pooling Rowsets Java Naming and Directory Interface (JNDI) Verteilte Transaktionen NOTIZEN ___________________________________ ___________________________________ ___________________________________

10 JDBC 2.0 Das einzige offizielle API für Datenbank-Transactionen mit "Distributed Unit of Work" JDBC wird als "Resource Adapter" vom Transaction Manager verwendet Stellt dem Transaction Manager Dienste zur Verfügung: Connection Pooling XA Verteilte Transaktionen NOTIZEN ___________________________________ ___________________________________ ___________________________________

11 JDBC 2.0: Connection Pooling
Transparent für die Applikationen Wird intern vom DataSource object verwaltet durch javax.sql.PooledConnection() (implementiert von EJB Server ) javax.sql.ConnectionPoolDataSource (implementiert von JDBC Treiber) NOTIZEN ___________________________________ ___________________________________ ___________________________________

12 Connection Pooling: Code Beispiel
Connection con = null; try { Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup( "jdbc/ inventoryDB"); con = ds. getConnection( user, password); . } finally { if (con != null) con. close(); NOTIZEN ___________________________________ ___________________________________ ___________________________________

13 JDBC 2.0: Distributed XA Transactions
Wenige Code-Änderungen: Kein Connection.commit() Kein Connection.rollback() Kein Connection.setAutoCommit() Wird intern von DataSource object verwaltet JDBC Treiber muß folgende JDBC XA Interfaces implementieren: javax.sql.XADataSource javax.sql.XAConnection In SequeLink Java Edition in Q3 99 NOTIZEN ___________________________________ ___________________________________ ___________________________________

14 XA Transactions Object Diagram
NOTIZEN ___________________________________ ___________________________________ ___________________________________

15 Transaction Attribute Summary für implizite Steuerung
NOTIZEN ___________________________________ ___________________________________ ___________________________________

16 Beispiel Code (in EJB) // Create multi-component, multi-distributor order // in Bean-Demarcated Session Bean Context ctx = new InitialContext(); ds1 = (DataSource) ctx.lookup("jdbc/ inventoryDB1"); ds2 = (DataSource) ctx.lookup("jdbc/ inventoryDB2"); ut = ctx. getUserTransaction(); ut. begin(); con1 = ds1.getConnection( user1, password1); con2 = ds2.getConnection( user2, password2); NOTIZEN ___________________________________ ___________________________________ ___________________________________

17 Beispiel Code (2) // loop through order lines
stmt1 = con1. createStatement(); stmt2 = con2. createStatement(); Flag = true // loop through order lines for each <component> { // check stock levels rs = stmt1. executeQuery( "select stock, arttype, price from stock " + "where artnm like <componentname>"”); NOTIZEN ___________________________________ ___________________________________ ___________________________________

18 Beispiel Code (3) if (rs. getInt( stock) != 0)
// decrement stock of item in DB1 stmt1. execute(" update stock set stock=" + (rs. getInt(" stock")- 1) where artnm= <component>"); // add new account record in DB2 stmt2. execute(" insert into account values( '" + name + "', '" + address + "', " + rs. getInt(" arttype") + ", " + rs. getInt(" price") + ")"); else flag = false } NOTIZEN ___________________________________ ___________________________________ ___________________________________

19 Beispiel Code (4) // if order can be completely filled, create the order, otherwise // rollback if (flag) ut. commit(); else ut. rollback(); NOTIZEN ___________________________________ ___________________________________ ___________________________________

20 Referenzen Ejb1_1-publicdraft2.pdf
jdbc spec 2.0 standard extension.pdf Developing Mission- Critical Applications using JDBC 2.0 Technology Seth White, JavaSoft. NOTIZEN ___________________________________ ___________________________________ ___________________________________


Herunterladen ppt "Verteilte Transaktionen mit EJBs und JDBC 2.0"

Ähnliche Präsentationen


Google-Anzeigen