Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber.
-
Upload
engelram-bork -
Category
Documents
-
view
110 -
download
1
Transcript of Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber.
Enterprise Java Beans (EJB)
VL Anwendungssysteme Freitag, 12.5.2000
Gerald Weber
Gerald Weber - EJB 2
Themen Zweck, Nutzung, Funktion der Beans Standard auf Java-Sprachebene [EJBSpec 1.1 prelim]
Allgemein Session Beans Entity Beans Transaktionen Sicherheit, Zugriff, Benutzeridentifikation
Kritik
Gerald Weber - EJB 3
Ziele der EJB Architektur Standard-Applikationsserver-Architektur für Java Abstraktion von Low-Level Aufgaben bei
Transaktionen, Multithreading, Connection Pooling Komponenten-Orientierung: Applikationen können
aus Teilen verschiedener Hersteller aufgebaut werden
Definierte Rollenverteilung für die Systemerstellung,Definition der Aufgaben der Rollen durch Contracts
Gerald Weber - EJB 4
EJB Architektur
RMI
EJB-Server
Clients
RDBMS
CORBA
JDBC
Container
Legacy-Application
B
B
Gerald Weber - EJB 5
Beispiel: E-Commerce-System Bean-Provider Cat.com bietet
Produktkatalog MyCat an
App. Assembler WebVend erstellt Applikation BuyMe
Marktplatz GoodStuff ist Deployer, EJBServer und Container kommen von MegaBeans
MyCat.jar
MyCat.jar Order
CartJSP
M.O.C.
EJBServ.+Cont.
HTTPClientClient
Client
DD
Gerald Weber - EJB 6
EJB Rollen Bean Provider (Experte im Anwendungsbereich) Application Assembler: (Experte im
Anwendungsbereich) Deployer (Experte für spezielle Systemumgebung) EJB Server Experte (TP-Experte, z.B. DB-Anbieter) EJB Container Provider (Experte für System-
programmierung, Load Balancing) System-Administrator
Gerald Weber - EJB 7
Komponentenbegriff Beans implementieren Business-Logik. Beans sind verteilte Objekte. Bean ist über eine Anzahl von Parametern anpaßbar. Beans enthalten deklarative Information (Deployment-
Descriptor). Client-Zugriff erfolgt durch festgelegte
Interfacegruppe.
Gerald Weber - EJB 8
Welche Analyse-Klassen stellen EJB dar? EJB repräsentieren grobkörnige Business-Objekte:
Sitzungsobjekte: Session Beans Persistente Objekte: Entity Beans
Beispiel: Eine Bean für Rechnung, aber nicht für Rechnungsposten
Keine aktiven Objekte Beans haben ein Analyse-Interface
Gerald Weber - EJB 9
Java-Sprachebene: Elemente einer EJBean Home Interface: Feste Arten
von Klassen-Methoden. U.a. Life-cycle-Management Methoden
Remote Interface: Instanzmethoden, Business-Methoden
Beanklasse: Implementiert beide Interfaces
Deployment Descriptor Verwendete andere Klassen
(Helper Classes)
Home Remote
Bean
HelperHelper
Gerald Weber - EJB 10
Beispiel: Die EntityBean MyCat Home-Interface MyCatHome:
create(String Name) findByPrimaryKey(String) findLike(String keyword)
Remote-Interface MyCat: getPrice() etc. setPrice() etc. buy(int pieces)
Bean-Klasse MyCatBean: Implementiert Methoden aus MyCatHome und MyCat.
Deployment Descriptor: type: entity role admin: Alle
Methoden role customer: nicht
setPrice().
Gerald Weber - EJB 11
EJB Contracts: Client-View-Contract Client kann durch RMI oder CORBA auf Bean zugreifen. Pro Deployment einer Bean ist ein Home-Interface-
Objekt in JNDI eingetragen und für den Client nutzbar. Bean Instanzen implementieren das Remote-interface
Der Client erhält sie durch das Home-Interface. Der Client kann ein sog. Handle erhalten. Dieses
identifiziert Bean-Instanzen oder -Homes über JVM-Grenzen hinweg.
Dyn. Bean-Nutzung mit MetaData-Interface.
Gerald Weber - EJB 12
Component Contract (Erklärt Container) Bean implementiert Business-M., Life-cycle-M. u.a.
Callbacks. Container ruft diese sinngemäß auf. Container behandelt Trans., Security and Exceptions. Container bietet JNDI-Environment, EJBContext. Bean Provider vermeidet Programmierung, die das
Container Runtime Management stört. Optional: Container behandelt Persistenz. Deployment-Descriptor enthält entsprechende Daten.
Gerald Weber - EJB 13
SessionBeans Enthalten Interaktionszustand (conversational state) Lebensdauer wird vom Client kontrolliert. Kann auf Platte ausgelagert werden (passivation)
mittels Serialization. Kann nur von einem Client angesprochen werden. Kann gespeichert werden als Handle.
Gerald Weber - EJB 14
Transaktionen: ACID - Eigenschaften Atomicity: Jede Transaktion wird ganz oder gar nicht
ausgeführt (= Sicht der anderen Nutzer). Consistency: Transaktionen hinterlassen die
Datenbank in einem konsistenten Zustand. Isolation: Transaktionen erscheinen, als wenn sie
hintereinander (sequentiell) ausgeführt würden. Durability: Wenn eine Transaktion erfolgreich beendet
ist, sind ihre Änderungen an Daten persistent.
Gerald Weber - EJB 15
Grundidee der Persistenz bei EJB ACID - Eigenschaften von
Transaktionen werden genutzt.
Innerhalb einer Transaktion kann mit genau einer Kopie gearbeitet werden.
Diese muß vor einem Commit gespeichert werden.
Eine Kopie je Transaktion.
DBMS
Beans
Gerald Weber - EJB 16
Persistenz: Alternativen bei EJBBean Managed Datenzugriff muß
programmiert werden Routinen:
find, load, store, remove, create
Container Managed Datenzugriff wird vom
Container beim Deployment erzeugt
Automatisches Mapping nur bei einfacher Abbildung
Business-Methoden werden in gleicher Weise implementiert
Gerald Weber - EJB 17
CMP am Beispiel Einträge im Deployment Descriptor
Persistente Felder: price, stock, description, vendor Informelle Beschreibung der FinderMethoden:
findLike: „Findet alle Produkte mit ähnlichem Namen“
setPrice(int newprice) { price = newprice}
Gerald Weber - EJB 18
Bean Managed Persistence am Beispiel ejbCreate(...): "insert into CatTable Values (...)" ejbfindLike(keyword):
"select ... where ID = $name"; ejbLoad(): "select ... where ID = $name";
price = resultset.get(" price ") ... ejbStore(): if (dirty)
"update ... where ID = $name" ; ejbRemove(): "delete ... where ID = $name"
Gerald Weber - EJB 19
Nachteile CMP - aktueller Standard: Kein Standard für OO -zu-Relational - Mapping Finder-Methoden nur informell beschrieben,daher nur
semiautomatsiches Deployment Keine Standard-Anpassung an bestehende
Datenbank-Schemata Eager loading: Gesamter Zustand wird geladen Kein dirty-flag, eager writing
Gerald Weber - EJB 20
Verteilte Transaktionen
Context
ClientTransactional
Client
T.Object
RecoverableServer
R.S.T.
Object
beginT,commit
abort
2PCTr.-Service
Gerald Weber - EJB 21
Transaction Demarcation SessionBeans: Container-/Bean-managed EntityBeans: Nur Container-managed Container Managed:
Transaktions-attribut im DD per Methode:Required, Supports, notSupp., Req.New, Mand., Never
Bei Client-Call ohne Transaktionskontext:Business-methode wird mit Transaktion gekapselt
Für Abbruch setRollbackOnly(), auch bei ExceptionsSes.B.: Updates bleiben, Ent.B.: Updates verloren
Gerald Weber - EJB 22
Security App.Ass. definiert Sicherheits-Rollen (security roles),
diesen gibt er (das) Zugriffsrecht per Methode Deployer weist Benutzern (Principals) S.-Rollen zu,
ebenso weist er Beans Rollen zu (auch zu RM) Container ermöglicht dieses Sicherheitsprotokoll Bean-managed Security (zusätzlich):
EJBContext.getCallerPrincipal()EJBContext.isCallerInRole(String role) //z.B. Limits
Gerald Weber - EJB 23
Kritik Container-Managed Persistence nicht genügend
spezifiziert Problem des Persistenzmodells: n-Zeilen-Reports
benötigen n Queries Keine Abstraktion zw. Business- und Persistenz- Impl.
Noch viele Unklarheiten in der Spezifikation (Gültigkeit Handle, Bean-To-Bean Roles)