23
Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

Embed Size (px)

Citation preview

Page 1: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

Enterprise Java Beans (EJB)

VL Anwendungssysteme Freitag, 12.5.2000

Gerald Weber

Page 2: 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

Page 3: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 4: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

Gerald Weber - EJB 4

EJB Architektur

RMI

EJB-Server

Clients

RDBMS

CORBA

JDBC

Container

Legacy-Application

B

B

Page 5: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 6: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 7: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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.

Page 8: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 9: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 10: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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().

Page 11: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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.

Page 12: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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.

Page 13: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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.

Page 14: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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.

Page 15: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 16: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 17: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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}

Page 18: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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"

Page 19: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 20: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

Gerald Weber - EJB 20

Verteilte Transaktionen

Context

ClientTransactional

Client

T.Object

RecoverableServer

R.S.T.

Object

beginT,commit

abort

2PCTr.-Service

Page 21: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 22: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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

Page 23: Enterprise Java Beans (EJB) VL Anwendungssysteme Freitag, 12.5.2000 Gerald Weber

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)