Verteilte Transaktionen mit EJBs und JDBC 2.0

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

description

Verteilte Transaktionen mit EJBs und JDBC 2.0. Oder, Java gets paranoid !. Richard Bourke. Agenda. Verteilte Transaktionen und Object Transaktion Monitor JDBC 2.0 Einführung Enterprise Java Beans in Zusammenhang mit JDBC 2.0. Java Virtual Machine. Java Applet. RM I. EJB Server. 2PC. - PowerPoint PPT Presentation

Transcript of Verteilte Transaktionen mit EJBs und JDBC 2.0

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/