PPT - Vorlesungen

Werbung
Enterprise JavaBeans
Architektur
Folien zum IFC-Vortrag am
20.12.2000
Java 2 Enterprise Edition –
Überblick 1/2




JDBC (Java Database Connectivity)
RMI (Remote Method Invocation)
JNDI (Java Naming and Directory Interface)
Java IDL / CORBA (Interface Description
Language / Common Object Request Broker
Architecture)
20.12.2000
©2000, Elmar Seestädt
2
J2EE-Überblick 2/2




JMS (Java Message Service)
JTA (Java Transaction API)
Java Servlets / JSP (Java ServerPages)
EJB (Enterprise JavaBeans)
20.12.2000
©2000, Elmar Seestädt
3
Was sind Enterprise JavaBeans



Verteiltes Komponenten Modell
JavaBeans als RMI-Remote Objekte
Können die Vorteile des Frameworks nutzen






Transaktionen
Persistenz
Sicherheit
Resourcen-Pools
Andere Java-API‘s
Brauchen eine Laufzeitumgebung (EJBContainer)
20.12.2000
©2000, Elmar Seestädt
4
EJB-Container


Dient als Laufzeitumgebung für EJB
Sun liefert nur eine Referenzimplementation


Hersteller ist verpflichtet alle Zusagen für EJB‘s
einzuhalten


-> Kompatibilitätslogo
Hersteller darf sog. Value-added-features einbauen


BEA Weblogic Server, EnHydra Open Source Projekt
-> Kompatibilitätsprobleme
Einige Details sind nicht standardisiert: z.B. Laden
des Datenbanktreibers

20.12.2000
-> Herstellerspezifisch
©2000, Elmar Seestädt
5
Beantypen
Entity Beans






Session Beans
Persistenz
Business Methoden
Finder Methoden
PrimaryKey
Container Managed
Persistence (CMP)
Bean Managed
Persistence (BMP)
20.12.2000




Überdauern nur eine
Benutzersitzung
Applikations Logik
Statefull Session
Beans
Stateless Session
Beans
©2000, Elmar Seestädt
6
Session Beans
Statefull




Stateless
Haben über
Methodenaufrufe
hinweg einen Zustand
Sind für eine Sitzung
spezifisch
Z.B. Abwicklung eines
Workflows
Z.B. Shopping Cart




20.12.2000
Speichern keinen
Zustand
Vergleichbar mit
statischen Methoden
einer Klasse
Eine Bean kann von
verschiedenen
Benutzern gleichzeitig
genutzt werden
Z.B. Druckdienste
anbieten
©2000, Elmar Seestädt
7
Home Interface


Factory zum erzeugen von Instanzen
Namenskonvention:


Extends EJBHome



DeinBeanNameHome.java
public EJBMetaData getEJBMetaData() throws java.rmi.RemoteException;
public void remove(...) throws java.rmi.RemoteException, RemoveException;
Methoden zum Erzeugen von Beans

20.12.2000
public void create(...) throws java.rmi.RemoteException, evtl. andere
Exceptions
©2000, Elmar Seestädt
8
Remote Interface


Interface für die Remote ausführbaren
Methoden
Namenskonvention:


Extends EJBObject






DeinBeanName.java
public
public
public
public
public
EJBHome getEJBHome() throws java.rmi.RemoteException;
Handle getHandle() throws java.rmi.RemoteException;
Object getPrimaryKey() throws java.rmi.RemoteException;
boolean isIdentical(EJBObject obj) throws java.rmi.RemoteException;
void remove() throws java.rmi.RemoteException, RemoveException;
Enthält weiter die Business und Bean
Methoden
20.12.2000
©2000, Elmar Seestädt
9
Bean Implementation



Implementation der aus den Interfaces
vorgegebenen Methoden
Implementiert die Home/Remote Interfaces nicht
direkt, sondern ist nur lose verpflichtet die
vereinbarten Methoden zu implementieren
Namenskonvention:


Implementiert das SessionBean Interface





DeinBeanNameBean.java
public void ejbActivate() throws java.rmi.RemoteException;
public void ejbPassivate() throws java.rmi.RemoteException;
public void ejbRemove() throws java.rmi.RemoteException;
public void setSessionContext(SessionContext ctxt) throws
java.rmi.RemoteException;
Enthält zu jeder create(...) eine korrespondierende
ejbCreate(...) Methode
20.12.2000
©2000, Elmar Seestädt
10
CMP-Entity Bean





Der EJB-Container übernimmt das
Datenbankmapping
Auf einfache Datenrelationen beschränkt
Man braucht kein SQL selbst schreiben, sondern gibt
nur die Datenfeld/Tabellenspalte Relation an
Man hat evtl. Probleme bei der Skalierung der
Applikation
Für die Finder Methoden wird ein
herstellerabhängiges kurzes Skript geschrieben
20.12.2000
©2000, Elmar Seestädt
11
Home Interface


Gleiche Konventionen wie bei Session
Beans
Es gibt sog. Finder Methoden:

Mindestens vorhanden:




Liefern entweder DeinBeanName
oder Enumeration/Iterator
Konvention:

20.12.2000
public DeinBeanName findByPrimaryKey(PKType pk) throws
java.rmi.RemoteException, FinderException;
public ... findByIrgendwas(...) throws
java.rmi.RemoteException, FinderException;
©2000, Elmar Seestädt
12
Bean Implementation

Implements EntityBean









public void ejbLoad() throws java.rmi.RemoteException;
public void ejbStore() throws java.rmi.RemoteException;
public void ejbActivate() throws java.rmi.RemoteException;
public void ejbPassivate() throws java.rmi.RemoteException;
public void ejbRemove() throws java.rmi.RemoteException;
public void setSessionContext(SessionContext ctxt) throws
java.rmi.RemoteException;
public void unsetSessionContext() throws java.rmi.RemoteException;
Die Methoden aus dem EntityBean Interface
werden nur leer implementiert
Man braucht nur die Business Methoden
implementieren
20.12.2000
©2000, Elmar Seestädt
13
BMP-Entity Bean




Man muß nun selbst das Finden, Laden,
Speichern, Erzeugen und Zerstören der Beans
kodieren
Man kann auch komplexe
Datenzusammenhänge modellieren
Die entsprechenden SQL Befehle sind alle
selbst zu schreiben
Bei der Skalierung auftretende Probleme kann
man nun durch „schlaueren“ Code umgehen
20.12.2000
©2000, Elmar Seestädt
14
Bean Implementation



Es wird wieder das EntityBean Interface
implementiert
Die vorgegebenen Methoden werden
nicht leer, sondern mit Inhalt
implementiert
Zu den ejbCreate(...) Methoden gibt es
korrespondierende ejbPostCreate(...)
Methoden
20.12.2000
©2000, Elmar Seestädt
15
Implementationstrick


Um Implementationsfehler zu umgehen kann
man das Remote Interface implementieren.
Damit man die EJBObject Methoden nicht
implementieren muss gibt es folgenden Trick:
EJBObject
DeinBeanNameRemote
erbt
DeinBeanName
20.12.2000
implementiert
DeinBeanNameBean
©2000, Elmar Seestädt
16
Literatur




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
20.12.2000
©2000, Elmar Seestädt
17
Herunterladen