j2ee conformance von jdbc 2.0 - middleware und ejb applikation server detlef künzelsystemberater...
TRANSCRIPT
J2EE Conformance vonJDBC 2.0 - Middleware und
EJB Applikation Server
Detlef Künzel [email protected]
+49 (0)89 96271 224
Agenda
Java 2 Enterprise Edition JDBC 2.0 Einführung Datenbankintegration mit JDBC 2.0 Enterprise Java Beans in Zusammenhang
mit JDBC 2.0
Java 2 , Enterprise Edition
Applikationsmodel Beschreibt, wie man eine J2EE Applikation entwickelt
Plattform Spezifikationen Definiert J2EE Anforderungen
Kompatibilitäts Testtool Überprüfung ob konform mit J2EE Plattform
Referenz Implementierung Zusammenarbeit mit J2EE Plattform
J2EE Architektur
Java 2 Plattform und JDBC
Java 2 Standard Edition JDBC 2.0 core Spezifikation
Java 2 Enterprise Edition Enterprise Java Beans 1.1 JDBC 2.0 Optional Package Java Servlets Java Server Pages Zertifizierung Verfahren mit J2EE Reference
Implementierung
JDBC 2.0 Einführung Neue Features
JDBC Core (java.sqljava.sql) Scrollable-Cursors Unterstützung Neue Datentypen Batch Updates
JDBC Optional Package (javax.sqljavax.sql) Java Naming and Directory Interface (JNDI) Connection Pooling Verteilte Transaktionen RowSets
Scrollable Result Sets
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL
ResultSet srs = stmt.executeQuery("SELECT COF_NAME, PRICE
srs.afterLast();while (srs.previous()) {String name = srs.getString("COF_NAME");float price = srs.getFloat("PRICE");System.out.println(name + " " + price);}srs.absolute(4);srs.relative(-2);...
JNDI Architecture
Connection Pooling: Object Diagram
Standard JDBC Standard JDBC ConnectionConnectionInterfacesInterfaces
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
XA Transactions Object Diagram
Standard JDBC Standard JDBC ConnectionConnectionInterfacesInterfaces
JDBC 2.0: Distributed XA Transactions
Wenige Code-Änderungen: Kein Connection.commit() Kein Connection.rollback() Kein Connection.setAutoCommit()
Stattdessen in dem DataSource object verwaltet JDBC Treiber muß folgende JDBC XA Interfaces
implementieren: javax.sql.XADataSource javax.sql.XAConnection
In SequeLink Java Edition seit Dezember 1999
Welche Applikationserver unterstützen verteilte Transaktionen?
IBM - Websphere ab Version 3.5 IONA - I-Portal Applicationserver Gemstone - Gemstone/J
bei anderen klären ob XADataSource-Interface unterstützt wird
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
Einsetzbar in beliebigen Java-Konfigurationen, da 100% Pure Java zertifiziert
Beste Möglichkeit für Java/OS 390 Verwendet von Javasoft im Rahmen der J2EE
Zertifizierungsverfahren
Enterprise Java Bean
SessionBeans
modellieren Prozesse und AbläufeZugriff auf Datenbankenz.B. Abfrage des Kontostandes
Einem Client zugeordnetanonym
Transiente Objektekurzlebig, für eine Sitzungüberleben Systemabsturz nicht
EntityBeans
Repräsentieren Geschäftsabläufeverknüpft mit Datenbankenz.B. Daten eines Bankkontos
Von mehreren Clients nutzbarbesitzt Identität
Persistente Objektelanglebig überleben Systemabstürze
Transaktionssteuerungdurch JavaBeans
Explizit (SessionBeans) ist nicht J2EE konform wird aus Performensgründen
jedoch häufig angewendet Implizit (EntityBeans)
Bean managed Zustandssicherung durch Bean Bean-Provider codiert DB-Aufruf
(als Teil der Bean-Business-Logic) Container managed
Zustandssicherung durch Container Container generiert DB-Aufrufe (Deployment Deskriptor
spezifiziert zu sicheren Bean-Attributen)
Transaction Attribute Summaryfür implizite Steuerung
Beans und TransaktionenBeispiel
Session Bean:SB_KundenPflege
Methoden:Anlegen()Aendern()Suche()
Entity Bean:EB_KundeMethoden:ejbStore() ejbLoad()
Deployment Descriptor:SB_KundenPflege:
TX_SUPPORTS
Deployment Descriptor:EB_Kunde:
TX_MANDATORY
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);
Beispiel Code (2)
stmt1 = con1. createStatement();stmt2 = con2. createStatement();... Transaktion hier ...// if order can be completely filled, create the
order, otherwise// rollbackif (flag)ut. commit();elseut. rollback();