61
Enterprise Java Beans

Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

  • Upload
    others

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

Enterprise Java Beans

Page 2: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

2

Überblick

! Architektur

! EJB in der Praxis

! Dienste und Probleme / Nachteile

Page 3: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

3

Motivation für Applikation Server

„Die Auseinandersetzung wird sich in diesem Jahrzehnt bei Middleware abspielen, nicht Betriebssystemen“

John Swainson, General Manager in der IBM Software Group

Page 4: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

4

Mainframe Architektur

Page 5: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

5

3-Schicht Architektur

Page 6: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

6

Anforderungen an Application Server

! Erweiterbarkeit

! Skalierbarkeit

! flexibel hinsichtlich Lastenverteilung

! Hochverfügbarkeit

Page 7: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

7

Java-basierte Application Server

! Anforderungen:

"standardisierte Schnittstellen

"transparente Services

"Transaktionssicherheit

"Komponentenbasiert

Enterprise Architektur

Page 8: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

8

Was ist die Enterprise Architektur?

! Architektur für eine Serverseitige Plattform, die verteilte Komponenten zur Verfügung stellt " “a standard for multi-tier, server-oriented,

component development”.! Dienste: “lifecycle”, Transaktionen, Sicherheit,

Verbindung zum Client, Datenbankzugriff, “Pooling”,…!! Entwickler soll sich auf die BusinessEntwickler soll sich auf die Business--Logik Logik

konzentrieren könnenkonzentrieren können

Quelle: Sun’s Enterprise JavaBeans™ spec

Page 9: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

9Quelle: Sun’s Enterprise JavaBeans™ spec

Enterprise Architekture

Page 10: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

10

Was sind ”Enterprise JavaBeans” (EJB)?

! Serverseitig wiederverwendbare

Java Komponenten

! Enterprise JavaBeans werden

vom J2EE Server ausgeführt

! Server bietet Dienste, die von

Programmierer schwer

implementiert werden können

" einmal schreiben, in jedem Server

laufen lassen

Page 11: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

11

Entwicklung von EJB

! Die EJB 1.0 Spezifikation wurde auf der JavaOne ‘98 Conferenceveröffentlicht.

! Die Spezifikation wurde von Sun mit vielen Firmen erarbeitet:" Sybase" BEA" Oracle" IBM" Netscape" Novell" Tandem" Viele Andere

! 2.0 Spezifikation Aktuell (22. Aug. 2001)

Page 12: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

12

J2EE Server Architektur

! Kann in Container und Server aufgeteilt werden."Container

!Bietet High-Level Dienste für das EJB

"Server!Bietet Low-Level Dienste, z.B. Netzwerkverbindung!Der Server soll viele Protokolle wie RMI, IIOP oder DCOM

unterstützen.

! Clients können in jeder Sprache geschrieben werden

Page 13: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

13

J2EE Server Architektur

Page 14: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

14

Server and Container Dienste

! Remote-Zugriff möglich, sobald Komponente im Server

! Multi-Client Unterstützung # Kopie pro Client! Ressourcen Management (Thread, Sockets, DB-

Verbindung)! Komponenten Lebenszyklus! Persistenz von Objekten! Sicherheit ! Lokale Transparenz durch JNDI

(„Java Naming and Directory Interface”)! Transaktions-Management

Page 15: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

15

Clustering

! Skalierbarkeit

" Einen Server hinzufügen # mehr Leistung

! Hoch Verfügbarkeit

" Wenn einer ausfällt, sind die anderen Server noch verfügbar

! Automatische Lastverteilung

! Clustering ist unsichtbar für den Entwickler

Page 16: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

16

Hersteller! Ein Hersteller muss die EJB Spezifaktion erfüllen und die

Container zur Verfügung stellen! Durch die Spezifikation ist sichergestellt, das eine EJB-

Anwendung in jedem EJB-Server läuft! EJB Container/Server Hersteller:

" BEA WebLogic Tengah" NetDynamics" IBM WebSphere Advanced Edition" Oracle8i, Oracle Application Server" Persistence Power Tier" Progress Apptivity" Jboss (Open Source)" Forte, Informix, Netscape, Gemstone, Bluestone, Inprise und

viele andere…

Page 17: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

17

Java Naming and Directory Interface (JNDI)

! Einheitliches Namensschema zum Zugriff auf:"Netzwerkrechner"Dateien im Dateisystem"Objekte im Applikationserver (Servlets, JSPs,

EJBs)! JNDI wird benötigt, um auf EJBs zuzugreifen! Bsp: jndi name: ejb/nameBean, ejb/Other/a

ejb

nameBeanOther

a b

Page 18: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

18

Architektur

EJBs

Page 19: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

19

Beans Übersicht

Wie implementiert man EJB´s ?

Page 20: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

20

Enterprise Java Beans – Übersicht

Bean Bean TypenTypen

SessionSessionEntityEntity

BeanBeanManagedManaged

= = BMPBMP

ContainerContainerManagedManaged

= = CMP

StatefulStateful StatelessStateless

CMP

Quelle: Sun’s Enterprise JavaBeans™ spec

Page 21: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

21

Enterprise Java Beans – Übersicht

Entity Beans Session Beans

! Persistente Daten – meistesDB - Zustand

! Finder Methoden! PrimaryKey! Container Managed

Persistence (CMP)! Bean Managed Persistence

(BMP)

! Überdauern nur eine Benutzersitzung

! Applikations Logik! Statefull Session Beans! Stateless Session Beans

Page 22: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

22

Enterprise Java Beans – Übersicht

Warum verschiedene Session-Beans?

Statefull Stateless

! Haben über Methodenaufrufe hinweg einen Zustand

! Sind für eine Sitzung spezifisch

! Z.B. Abwicklung eines Workflows

! Z.B. Warenkorbdes aktuellen Beutzers

! Speichern keinen Zustand! Vergleichbar mit statischen

Methoden einer Klasse! Eine Bean kann von

verschiedenen Benutzern gleichzeitig genutzt werden

! Z.B. Loginmanager, oder Druckdienste anbieten

Page 23: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

23

Enterprise Java Beans – Prinzip

Client

Container

EJB Server

EnterpriseJavaBeans™Component

EJB Object(bean id)

EJB Home(client view)

DatabaseOr

TP Monitor

businessmethods

create, find, remove

Kann Session- oder Entity-Bean sein

Page 24: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

24

Das Abstract Factory Pattern

! Hinter Java-Bans steckt das Abstract FactoryPattern. Ziel: Nutzung eines Interfaces um Objekte zu Kreieren ohne deren konkrete Implementierung zu kennen.

ConcreteFactory1

ProductA1 ProductA2

ConcreteFactory2

AbstractProductA

AbstractFactory

createProductA( )createProductB( )

ProductB1 ProductB2

AbstractProductB

ClientHome-

Interface

Remote-o. LocaI-nterface

Page 25: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

25

EJB Basiert auf Factories

! Enterprise Beans bestehen aus mindestens zwei unabhängigen Interfaces

! Home Interface: definiert eine Menge von Factory-Methoden"Der Client ruft diese Methoden auf um Instanzen zu

erzeugen"Der Container erzeugt die Konkreten Instanzen

transparent! Remote/Local Interface: Hier werden die Methoden

für den Zugriff definiert. Der Client greift niemals direkt auf ein Bean zu!

Page 26: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

26

Home Interface

! Factory zum Erzeugen von Instanzen

! Namenskonvention: "DeinBeanNameHome.java

! Extends EJBHome" public MeinBeanHome extends EJBHome {

…}

! Methoden zum Erzeugen von Beans" public void create(...) throws java.rmi.RemoteException, evtl. andere

Exceptions

Page 27: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

27

Remote/Local Interface

! Interface für die ausführbaren Methoden des Beans

! Namenskonvention: " DeinBeanName.java /DeinBeanNameLocal.java

! Extends EJBObject /EJBLocalObject" public MeinBeanHome extends EJBHome {

public Object getPrimaryKey() throws RemoteException;public boolean isIdentical(EJBObject obj) throws … public void remove() throws RemoteException …

}

! Enthält weiter die Business Methoden

Page 28: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

28

Persistence und Beziehungen

Wie implementiert man EJB´s ?

Page 29: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

29

Entity-Bean = 1 DB Tupel

Datenbank Entity-Objekt

KinkelKlaus

MustermannVera

VornameName

Name=MustermannVorname=Vera

Page 30: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

30

Alle Beans werden vom Container verwaltet

! Der Container verwaltet einen Pool von Objekten

Pooled Instances Ready Instances

Korrespondieren mit den “aktuellen Daten”Sind zu einem echten EJB-Objekt assoziert. BearbeitenAnfragen.

Korrespondieren nicht mit den “aktuellen Daten”. Verabeitenkeine Anfragen. Nur leereObjekt-Hülsen eines Typs

# Daten-Verwaltung / Synchronisation mir einer DB muss vom Container gesteuert werden

Page 31: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

31

Vom Pool zum “bereiten” Bean

! Instanzen werden mit gültigen Daten gefüllt wenn der Container ein weiters Bean benötigt

! Erzeugen: ejbCreate() and ejbPostCreate() "Werden aufgerufen wenn ein “neues” Objekt erzeugt

wird. (Wenn es dieses also in der DB noch nicht gab)"z. B. eine create() Methode kann vom Home-Objekt

aufgerufen werden! Aktivieren: ejbActivate()

"Werden aufgerufen wenn das Objekt bereits logisch (z.B. in der DB) existiert.

"Z.B. wenn die Methode findXXX() vom HomeInterface aufgerufen wurde

Page 32: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

32

Vom “bereiten” Bean zum Pool

! Wenn eine der beiden Methoden aufgerufen wird, wird die Instanz wieder zum Pool hinzugefügt"ejbRemove() wenn das zugehörige Logische-Objekt

gelöscht wurde (z.B. ein Löschen in der DB)"ejbPassivate() wenn das zugehörige Logische-Objekt

existiert, aber das Bean deaktiviert werden soll. (z.B. weil es eine längere Zeit nicht mehr benutzt wurde)

Page 33: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

33

Persistence Modelle – CMP/BMP

Es gibt zwei Modelle um Daten dauerhaft zu speichern ?

Page 34: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

34

BMP - Die Persistence wird vom Beanverwaltet

! Man muss nun selbst das Finden, Laden, Speichern, Erzeugen, Aktivieren und Passivieren der Beans kodieren

! Die entsprechenden SQL Befehle sind alle selbst zu schreiben

! ejbCreate, ejbLoad, ejbRemove, and ejbStoreMethoden müssen implementiert werden

Page 35: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

35

CMP - Die Persistence wird vom Container verwaltet

! Der EJB-Container übernimmt das Datenbank-Mapping

! Der SQL-Code wird vom Container selbst generiert

! Für die Finder Methoden werden sogenannte EJB QL -Anfragen verwendet

Page 36: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

36

CMP- Beispiel

! Der Code für die Persitence-Felder, welche vom Container verwaltet werden sollen sieht folgender maßen aus

! public abstract setXXXX() und getXXX()

public abstract class BaseattribBean implements EntityBean {...public abstract void setBa_ID(java.math.BigDecimal baId);public abstract void set Ba_Name(java.lang.String baName);

...}

public abstract class BaseattribBean implements EntityBean {...public abstract void setBa_ID(java.math.BigDecimal baId);public abstract void set Ba_Name(java.lang.String baName);

...}

Page 37: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

37

CMP- Beispiel – der zugehörige EJB-Descriptor

<entity>

<ejb-name>Baseattrib</ejb-name>

<local-home>compiler.ejb.entity.BaseattribHome</local-home>

<local>compiler.ejb.entity.Baseattrib</local>

<ejb-class>compiler.ejb.entity.BaseattribBean</ejb-class>

<cmp-field>

<field-name>Ba_ID</field-name>

</cmp-field>

<cmp-field>

<field-name>Ba_Name</field-name>

</cmp-field>

</entity>

Page 38: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

38

EJB QL

Wie werden Objekte gefunden? Abfragen?

Page 39: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

39

EJB Abfrage - Sprache: EJB QL

! Standardsprache zum definieren von finderXXX()-Methoden

! Teilmange von SQL92 Standard mit einigen Erweiterungen

! SQL: Select .. From … Where Klauseln! EJB QL :: = [Select_Klausel] From_Klausel

[Where_Klausel]

Page 40: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

40

Beispiel eines Finders

public interface CaseHome extends javax.ejb.EJBLocalHome {public Case create(BigDecimal caId) throws ...;public Case findBa_ID (double caId) throws ...;

}

<query><query-method><method-name>findBa_ID</method-name><method-params><method-param>int</method-param>

</method-params></query-method><ejb-ql><where baId = ?1>

</ejb-ql></query>

Methodenname im Home

Parameter der Methode findXXXX()

Page 41: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

41

EJB Abfrage-Sprache: EJB QL

! EJB QL Parameter korrespondieren zu den Parametern welche in einer find/select Methode definiert wurden

! Entity-Beans müssen einen sogenannten “abstractschema name” besitzen, der in der Anfrage verwendet wird

! Bei Namensänderungen z.B Bean-Name muss die EJB QL Anfrage nicht verändert werden

Page 42: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

42

EJB Abfrage-Sprache: EJB QL

FROM Buchhandlung L, IN (L.buecher) bWHERE b.author.vorname = ‘Katharina’ ANDb.author.nachname = ‘Morik’

CMR Feld 1:n

CMR Feld 1:1

Buchhandlung

Buch

Author

1

n

n

1

1

1

Page 43: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

43

Beziehungen in EJB

Wie werden Beziehungen definiert?

Page 44: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

44

Wie werden Beziehungen definiert?

Wir wollen folgende Beziehung definieren!

Buchhandlung

Buch

Author

1

n

n

1

1

1

Page 45: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

45

Wie werden Beziehungen definiert?<ejb-relation>

<ejb-relation-name>Buchhandlungen_haben_Buecher</ejb-relation-name>

<ejb-relationship-role>

<ejb-relationship-role-name>Buchhaen_Rolle</ejb-relationship-role-name>

<multiplicity>One</multiplicity>

<relationship-role-source>

<ejb-name>Buchhandlung</ejb-name>

</relationship-role-source>

<cmr-field>

<cmr-field-name>buecher</cmr-field-name>

<cmr-field-type>java.util.Collection</cmr-field-type>

</cmr-field>

</ejb-relationship-role>

Buchhandlung

Buch1

n

Quelle: Sun’s Enterprise JavaBeans™ spec

Page 46: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

46

Wie werden Beziehungen definiert?

<ejb-relationship-role>

<ejb-relationship-role-name>Buch_Rolle</ejb-relationship-role-name>

<multiplicity>Many</multiplicity>

<relationship-role-source>

<ejb-name>Buch</ejb-name>

</relationship-role-source>

</ejb-relationship-role>

</ejb-relation>Buchhandlung

Buch1

n

Quelle: Sun’s Enterprise JavaBeans™ spec

Page 47: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

47

Der zugehörige Code im Entity-Bean

public abstract class Buchhandlung implements EntityBean {

….

public abstract Collection getBuecher();

….

} CMR Felder fangen stetsMit dem Schlüsselwort

getXXX an!

Page 48: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

48

ArchitekturEJBsDienste, Probleme

Page 49: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

49

Message Driven Beans

! Problem: Nachrichten wurden bisher synchronverarbeitet

! Asynchrone Verarbeitung: Message Driven Beans"Point – to – point (Queue) (Client # Bean)"Publish – subscribe (Topic) (Client # Verteiler)"Es ist sichergestellt, das die Nachricht auch ankommt

Page 50: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

50

Senden einer Nachricht

Sicht des Client

Topic oder Queue

Quelle: Sun’s Enterprise JavaBeans™ spec

Page 51: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

51

Was ist eine Transaktion?

! Eine Folge von Aktionen soll atomar sein

"Entweder alle Aktionen werden wirksam

"Oder keine Aktion soll ein Wirkung haben

Was bedeutet das bei einem EJB-Server?

Page 52: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

52

Das Problem (1/2)

Operation 1 Operation 2 Operation 3

Was passiert bei einem Fehler?

Quelle: Sun’s Enterprise JavaBeans™ spec

Page 53: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

53

Das Problem (2/2)

Operation 1 Operation 2

Was passiert bei einem Fehler?

Quelle: Sun’s Enterprise JavaBeans™ spec

Page 54: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

54

Die Lösung: Trasaktionsunterstützung bei J2EE

! J2EE-Server hat einen Transaktions-Monitor"Transaktionen werden im ”Transaction context”

ausgeführt ! ”Transaction context”

"Zugriff vom Client oder vom Bean über das UserTransaction Interface

Page 55: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

55

UserTransaction Interface

! public void begin()

! public void commit()

! public void rollback()

! public void setRollbackOnly()

! public int getStatus()

! public void setTransactionTimeout(int timeout)

STATUS_ACTIVE STATUS_MARKED_ROLLBACK STATUS_PREPARED STATUS_PREPARING STATUS_UNKNOWN STATUS_COMMITTED STATUS_COMMITTING STATUS_ROLLEDBACK STATUS_ROLLING_BACK STATUS_NO_TRANSACTION

Page 56: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

56

Transaktionen im Einsatz

begin()

UpdateData()

commit()

oder

rollback() UpdateData()

Page 57: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

57

Nachteile - Effizienz

! Overhead: Alle Beans sind Transactionsfähig, Thread-sicher, verteilt "Dies sollte Optional sein, wie z.B. bei

COM+! Hoher Aufwand: Vergleich zur

normalen RMI Implementation"Mehr Code (Interfaces,…)"Mehr Denken (Welche Beans?, Welche

Interfaces?,…)

Performanz

Zeitaufwand

Page 58: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

58

CMP – Problematik

! EJB-QL unterstützt nur eine Teilmenge der Funktionen in wirklichen DB-Systemen (keine Aggregatfunktionen)

! Effizienzprobleme # DB ist schneller" Keine Informationen für den jeweiligen DB-Optimizer verfügbar

(Bsp. Oracle: Index explizit angeben, „First_Rows“)" Nutzung von internen DB-Funktionen nicht möglich

! Abfrage fest definiert (Descriptor) " Keine dynamischen Abfragen vom Client

! EntityBean kann nur auf eine Tabelle gemappt werden. Spezielle OR-Mapping Tools sind viel mächtiger.

Page 59: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

59

Hersteller

! Spezialisierte Container können zusätzliche Dienste zu denen in der EJB Spezifikation bieten

# Ein Enterprise Bean das einen solchen Dienst nutzt, kann nur in einem Container eingesetzt werden, der diesen Dienst bietet

! Hoher Preis: ca. 12000 €! Probleme bei freien J2EE Servern?

" Keine Technische Unterstützung" Schwere zu benutzen (keine Grafische Oberfläche ...)" Keine Integration zu Entwicklungstools tools (z.B., Jbuilder)" Bugs? Probleme während des Projektes?

Page 60: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

60

Literatur

! Linda G. DeMichiel, L. Ümit Yalçinalp, Sanjeev Krishnan. Enterprise JavaBeansTM Specification, Version 2.0, EJB web site. Sun Microsystems, Inc. 2001.

! Designing Enterprise Applications with the Java 2 Platform, Enterprise Edition. EJB web site. Sun Microsystems, Inc. 2000.

! Enterprise JavaBeans web site. http://java.sun.com/products/ejb! Matena, Vlada., Harper, Mark. Enterprise JavaBeans Specification, v1.1.

EJB web site. Sun Microsystems, Inc. 1999. ! Roman, Ed. Mastering Enterprise JavaBeans and the Java 2 Platform

Enterprise Edition. John Wiley and Sons Inc. 1999. ! Thomas, Anne. Enterprise JavaBeans Technology Server Component

Model for the Java Platform. EJB web site. Patricia Seybold Group. 1998. ! Java Enterprise in a Nutshell – David Flanagan! Core Servlets and Java ServerPages – Marty Hall! Designing Enterprise Applications with J2EE – Nicholas Kassem! Enterprise JavaBeans – Richard Monson-Haefel

Page 61: Enterprise Java Beans · Enterprise Java Beans – Prinzip Client Container EJB Server Enterprise JavaBeans™ Component EJB Object (bean id) EJB Home (client view) Database Or TP

61

Ende