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 Ü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 Übersicht Einordnung in die Referenzarchitektur für betriebliche Informationssysteme cd Quasar Architecture «Abstract T Component» «A Component» Client Management Dialog Application Server stellen Dienste bereit für: Anwendungsrahmen Persistence «Abstract T Component» Application Kernel Facade Transaction Transaction «A Component» «Abstract T Component» Application Component Authorization Alternatives «Abstract T Component» Alternatives Authorization Also: alle serverseitigen Dienste für Enterprise Applications «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 JDBC J2EE JavaBeans J2SE JTS Java Client-Server RMI JSP JMS EJB Servlet WORA Stub JTA Skeleton XML N-Tier Thin Client JNDI 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 JavaBeans Beans Enterprise Java 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 Session Bean Enterprise 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 register find/create Bean Home Interface EJB Home EJB Context new 4 Client EnterpriseBean Remote Interface Fachmethoden remove EJB Object ejbCreate BeanInstanz Fachmethoden 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 4 1 EJB-Home Interface Deployment Descriptor .jar file 5 2 3 EJB-Object Interface Compile .class files 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 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» «interface» A_Component «interface» A_UseCase +contains 1 +contains A_UseCaseMethod +contains * 1 * 1 +contains 1 SessionBean Keine Entsprechung in EJB «interface» * A_EntityController 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 T AT 0 A-Software T-Software AT-Software 0-Software SessionBeans A-Fall A-Verwalter A-Entität Persistenz-Schnittstelle CMP BMP Hibernate verwendet implementiert 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 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