11. Enterprise Java Beans Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006
Übersicht Grundlagen der Programmierung II Einordnung in den Kontext der Vorlesung Anwendungsentwicklung (Referenzarchitektur, Softwarekategorien) Anwendungs-Komponenten (Anwendungskern) Datenbankzugriff Graphische Benutzeroberflächen (Swing, JSF) Client- / Serverkommunikation (RMI) Berechtigungsverwaltung Application Server (EJB) Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 2
Agenda Agenda Übersicht Enterprise Java Beans Architektur-Überlegungen Literatur Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006. 27.6.2006 Seite 3
Einordnung in die Referenzarchitektur für betriebliche Informationssysteme Übersicht cd Quasar Architecture «Abstract T Component» Client Management «A Component» Dialog Application Server stellen Dienste bereit für: Anwendungsrahmen «Abstract T Component» Application Kernel Facade Alternatives Persistence Transaction Alternatives «A Component» Application Component «Abstract T Component» Authorization Authorization Also: alle serverseitigen Dienste für Enterprise Applications «Abstract T Component» Transaction «Abstract T Component» Persistence Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 4
Übersicht Java Buzzwords J2EE JTS RMI JSP Stub JDBC JavaBeans J2SE Java Client-Server JMS EJB Servlet WORA Skeleton JTA N-Tier XML JNDI Thin Client Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 5
Übersicht N - Tier Architekturen Präsentation Applikationsserver und/oder Webserver Datenbanken + (Alt) Anwendungen Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 6
Übersicht J2EE - Java 2 Platform, Enterprise Edition Aktuelles Release: Enterprise Edition 5, EJB 3.0 Spezifikation, Referenzimplementation, BluePrints und Design Richtlinien Kompatibilitätstest Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 7
Übersicht Übersicht J2EE Architektur J2EE Server: Laufzeitumgebung für Container EJB Container: Laufzeitumgebung für Beans Enterprise Bean: Anwendungsobjekte Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 8
Agenda Agenda Übersicht Enterprise Java Beans Architektur-Überlegungen Literatur Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006. 27.6.2006 Seite 9
Enterprise Java Beans EJB: die Theorie ist verständlich; die Praxis ist eher anstrengend Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 10
Enterprise Java Beans Enterprise Bean Typen Session Beans zustandslos (stateless) zustandsbehaftet (stateful) Entity Beans Persistenz durch Container (Container Managed Persistence, CMP) Persistenz durch Bean (Bean Managed Persistence, BMP) Message-driven Beans Enterprise Bean Session Bean Entity Bean Stateful Session Bean Stateless Session Bean Container-managed Persistence Bean-managed Persistence Message-driven Bean EJB 26.06.2006 - v3 Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 11
Enterprise Java Beans SessionBean Serverseitiger Anwendungsdienst: entspricht Anwendungsfall in der Referenzarchitektur Ist jeweils einer Client Session zugeordnet: stateless: für die Dauer eines Methodenaufrufs; kein eigener Zustand stateful: Zustand (conversational state) bis Client terminiert oder die Bean freigibt Transient: Zustand wird nicht gespeichert Beispiele aus der Library Application: Registration Lending Accounting Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 12
Enterprise Java Beans SessionBeans: Codebeispiel import java.util.*; import javax.ejb.*; public class CartBean implements SessionBean { String customername; String customerid; Vector contents; public void addbook(string title) { contents.addelement(title); } public void removebook(string title) throws BookException { contents.removeelement(title); } } public CartBean() {} public void ejbremove() {} public void ejbactivate() {} public void ejbpassivate() {} public void setsessioncontext(sessioncontext sc) {} Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 13
Enterprise Java Beans EntityBean Persistentes Geschäftsobjekt, Speicherung in einer relationalen Datenbank Analog zu Entities und EntityManagers in der Referenzarchitektur Zentrale Ressource, für viele Clients gleichzeitig -> Transaktionskontrolle Schlüssel / Identität, Assoziationen zwischen EntityBeans Persistenzmechanismen: Bean-managed Persistence (BMP): Datenbankzugriffe manuell programmieren Container-managed Persistence (CMP): Datenbankzugriffe werden vom EJB-Container bereit gestellt Beispiele aus der Library Application: Customer Book Loan Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 14
Enterprise Java Beans Entity Bean - Persistenz Container Managed Persistence CMP: Datenbankzugriff wird automatisch generiert Mapping der persistenten Attribute und der Beziehungen einer Bean-Klasse wird im Deploment Descriptor definiert Bean Managed Persistence BMP: Datenbankzugriff wird vom Entwickler innerhalb der Bean-Klasse implementiert Methoden zum Anlegen, Laden, Speichern und Löschen der Bean-Attribute in der Datenbank Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 15
import javax.ejb.*; import java.rmi.remoteexception; import java.util.*; public abstract class KontoBean implements EntityBean { private EntityContext ctx; public abstract double getsaldo(); public abstract void setsaldo(double saldo); Enterprise Java Beans EntityBeans: Codebeispiel public abstract String getkontonummer();... public double einzahlen( double betrag ) throws KontoException { setsaldo(getsaldo() + betrag); return getsaldo(); } public void ejbactivate() throws RemoteException { } } public void ejbpassivate() throws RemoteException { } Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 16
Enterprise Java Beans EJB QL: Query Language Beispiele SELECT OBJECT(p) FROM Player p SELECT DISTINCT OBJECT(p) FROM Player p WHERE p.position =?1 SELECT DISTINCT OBJECT(p1) FROM Player p1, Player p2 WHERE p1.salary > p2.salary AND p2.name =?1 Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 17
Enterprise Java Beans Client Zugriff JNDI lookup Home Naming Service find/create Bean Home Interface register EJB Home EJB Context Client new 4 EnterpriseBean Fachmethoden remove Remote Interface EJB Object ejbcreate Fachmethoden Bean- Instanz Applikationsserver (Container) Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 18
Enterprise Java Beans Zugriffsarten von Clients remote: Zugriff über Rechner- und JVM-Grenzen hinweg Remote-Interface notwendig: Geschäftsmethoden Home-Interface notwendig: Lebenszyklus (create, remove) local: Zugriff innerhalb derselben JVM LocalObject-Interface notwendig: Geschäftsmethoden LocalHome-Interface: Lebenszyklus web service: Zugriff über Stateless SessionBean Eebservice Endpoint Interface notwendig: Geschäftsmethoden Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 19
Enterprise Java Beans Entwicklungszyklus Bean - Provider 1 EJB-Home Interface 4 Deployment Descriptor 5.jar file 2 EJB-Object Interface Compile.class files 3 Bean Klasse Bean - Deployer Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 20
Agenda Agenda Übersicht Enterprise Java Beans Architektur-Überlegungen Literatur Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006. 27.6.2006 Seite 21
Architektur-Überlegungen Zuordnung von EJB-Konzepten zur Referenzarchitektur des Anwendungskerns cd Application Kernel Concepts «interface» A_Component +contains «interface» A_UseCase +contains «interface» A_UseCaseMethod 1 +contains * 1 * 1 +contains Keine Entsprechung in EJB 1 * «interface» A_EntityController SessionBean Home-Interface EntityBean +controls * 1 * EntityBean «interface» A_Entity Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 22
Architektur-Überlegungen EJB-Technologie (T-Software) sollte von der fachlichen Anwendung (A-Software) getrennt werden A-Software T-Software AT-Software 0 0-Software A T AT SessionBeans A-Fall A-Verwalter A-Entität Persistenz-Schnittstelle verwendet implementiert CMP BMP Hibernate Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 23
Agenda Agenda Übersicht Enterprise Java Beans Architektur-Überlegungen Literatur Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006. 27.6.2006 Seite 24
Literatur Literatur und Links EJB Hauptseite bei Sun http://java.sun.com/products/ejb/ Tutorials http://java.sun.com/j2ee/1.4/docs/tutorial/doc/ http://www.caucho.com/resin-3.0/ejb3/tutorial/index.xtp BMP oder CMP? http://dev2dev.bea.com/technologies/ejb/articles/334.jsp EJB Design Patterns http://www.c2.com/cgi/wiki?ejbdesignpatterns JavaOne 2004 http://java.sun.com/javaone/ zb TS-1951: J2EE 1.4 SDK Overview, TS-1861: EJB 3.0 Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 25
Literatur theserverside.com Portal für Java Enterprise Anwendungen http://theserverside.com/ Freies PDF Buch zum Download http://www.theserverside.com/books/wiley/masteringejb/ Hochschule Darmstadt University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. Sommersemester 2006., 27.6.2006, Seite 26