Transcript
Page 1: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Verteilte Transaktionen mit EJBs und JDBC 2.0

Oder, Java gets paranoid !

Richard Bourke

Page 2: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Agenda

Verteilte Transaktionen und Object Transaktion Monitor

JDBC 2.0 Einführung Enterprise Java Beans in Zusammenhang mit

JDBC 2.0

Page 3: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Was sind Verteilte Transaktionen ?•Transaktionen auf mehrere, auchheterogenen Datenbanken•Alle beteiligte Datenbankensind immer in einem konsistentenZustand•Früher immer von einemTransaktions-Monitor gesteuert•Unabdingbar für unternehmens-kritische Applikationen•XA, 2 Phase-Commit, LongTransaction sind (fast) Synonyme

EJB Server

DBMS 1

Java Virtual Machine

Java Applet

DBMS 2

RM I

2PC

Page 4: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

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

Page 5: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Page 6: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Java 2 Platform

Standard 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)

Page 7: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

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

Page 8: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

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

Page 9: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

JDBC 2.0 Neue Features

JDBC Core (java.sqljava.sql) Scrollable-Cursors Unterstützung Neue Datentypen Batch Updates

JDBC Standard Extension (javax.sqljavax.sql) Connection Pooling Rowsets Java Naming and Directory Interface (JNDI) Verteilte Transaktionen

Page 10: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

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

Page 11: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

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)

Page 12: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Connection Pooling: Code BeispielConnection 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();

Page 13: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

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

Page 14: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

XA Transactions Object Diagram

Page 15: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Transaction Attribute Summaryfür implizite Steuerung

Page 16: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Beispiel Code (in EJB)// Create multi-component, multi-distributor order// in Bean-Demarcated Session BeanContext 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);

Page 17: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Beispiel Code (2)

stmt1 = con1. createStatement();stmt2 = con2. createStatement();Flag = true // loop through order linesfor each <component> {// check stock levelsrs = stmt1. executeQuery("select stock, arttype, price from stock " +"where artnm like <componentname>"”);

Page 18: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

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}

Page 19: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Beispiel Code (4)

// if order can be completely filled, create the order, otherwise

// rollbackif (flag)ut. commit();elseut. rollback();

Page 20: Verteilte Transaktionen mit EJBs und  JDBC 2.0

Copyright © 1999 MERANT INC.

Referenzen

Ejb1_1-publicdraft2.pdf jdbc spec 2.0 standard extension.pdf Developing Mission- Critical Applications using

JDBC 2.0 Technology Seth White, JavaSoft.http://industry.java.sun.com/javaone/99/tracks/


Recommended