Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Fachhochschule München - 19.11.2002 Software Engineering II - 2002/2003 Enterprise JavaBeans (EJB) und Application Server Gruppe SEII03: Alexander Kubicki.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Fachhochschule München - 19.11.2002 Software Engineering II - 2002/2003 Enterprise JavaBeans (EJB) und Application Server Gruppe SEII03: Alexander Kubicki."—  Präsentation transkript:

1 1 Fachhochschule München Software Engineering II /2003 Enterprise JavaBeans (EJB) und Application Server Gruppe SEII03: Alexander Kubicki Mischa Gwinner Ranko Krvavac

2 2 Gesamt-Übersicht Komponentenmodelle und EJB Ranko Krvavac J2EE und Applikationsserver Mischa Gwinner EJB-Entwicklung und Beispiel Alexander Kubicki Enterprise JavaBeans und Application Server

3 3 Komponentenmodelle und EJB Komponenten Komponentenmodelle ORB als Basis COM / DCOM CORBA RMI JavaBeans Enterprise JavaBeans WebServices Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server

4 4 Komponenten-Definition Komponenten Komponentenmodelle Java Enterprise JavaBeans Ranko Krvavac – Komponentenmodelle und EJB Was sind Komponenten? unabhängige Softwarebausteine abgeschlossene Funktionalitäten in verschiedenen Systemumgebungen spezifizierte Schnittstellen, Implementierung veränderbar einfache Komposition zu komplexen Softwaresystemen Vorteile gegenüber Objekten? eigenständigere und komplexere Funktionalität definiertes Komponenteninterface leichte und unkomplizierte Wiederverwendung Enterprise JavaBeans und Application Server

5 5 Komponenten-Diagramm Ranko Krvavac – Komponentenmodelle und EJB Eine Drei-Schicht- Anwendung (Three-Tier-Architekture) besteht aus drei Komponenten. Die einzelnen Komponenten realisieren das Ebenenmodell. Browser Webserver Präsentationsebene Anwendungs-Server Datenbank Geschäftsebene Datenebene JDBC CORBA / RMI HTTP Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

6 6 ORB als Basis Ranko Krvavac – Komponentenmodelle und EJB Object Request Broker beschreiben folgendes Konzept bei der Kommunikation in verteilten Systemen: 1.Lokalisierung jeweiliger Methoden über ORB Namensdienst 2.Methodenaufruf bzw. Dienstanforderung einer Komponente 3.Objektreferenz der Remote-Komponente erhalten (Remote- Objekt bleibt auf dem Server) 4.Client-Komponente ruft über ORB Remote-Methoden auf 5.Konnektivität der Anwendungskomponenten (Kommunikation) Die drei wichtigsten Dienste DCOM, CORBA und RMI basieren auf dem Konzept von ORB (Infrastruktur). Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

7 7 COM / DCOM Ranko Krvavac – Komponentenmodelle und EJB Was sind COM / DCOM? Component Object Model (COM) sind lokale und sprachunabhähgige Schnittstellen. Distributed COM (DCOM) ist die netzwerkfähige Erweiterung von Microsoft, und genießt starke Verbreitung in der Windows-Welt. Beschränkungen von DCOM: Plattformunabhängigkeit nur bedingt gewährt schlechte Übergabe von Objekten, stattdessen Schachteln von Datensatzmengen Sicherheitsprobleme bei Implementierungen (ActiveX) Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

8 8 CORBA Ranko Krvavac – Komponentenmodelle und EJB Was ist CORBA? Verteilte Systeme basieren auf der Definition von Schnittstellen zwischen Komponenten und verschiedenen Diensten. Common Object Request Broker Architecture ist eine sehr umfangreiche Implementierung. Besonderheiten von CORBA: plattformunabhängig (Verwendung auf jedem OS) sprachunabhängig (C++, Java, Fortran, etc.) komplexes Framework für unterschiedliche Sprachen: Directory- and Naming-Services Transaction Services Persistent Object Services Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

9 9 RMI-Definition Ranko Krvavac – Komponentenmodelle und EJB Was bedeutet RMI? ähnlicher Ansatz wie CORBA, nur einfachere Implementierung und Beschränkung auf Java Remote Method Invocation bildet die Basis für entfernte Komponenten in Java mit Hilfe des Namensdienstes wird eine Referenz auf entfernte Objekte dynamisch an Client übergeben Zugriff auf Server-Objekte per Objektreferenz Objektserialisierung zum Versenden von seriellen Byteströmen (Objekte) durch das Netzwerk entfernte Methoden erscheinen wie lokale Aufrufe Kommunikationsprobleme bei Firewalls Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

10 10 RMI-Diagramm Ranko Krvavac – Komponentenmodelle und EJB 1.virtueller Client-Aufruf von Remote-Methode (bekannt) 2.Interfaces verstecken entfernte Objekte 3.Generierung des Rumpfes, welcher das Remote-Interface implementiert und mit Client-Objekt und Gerüst kommuniziert 4.Generierung des Gerüsts, welcher das Remote-Interface implementiert und mit Server-Objekt und Rumpf kommuniziert 5.RRL dient zur Verwaltung der Referenzen und Objekte Client Interface Rumpf (stub) Remote-Objekt Interface Gerüst (skeleton) Netzwerkverbindung Virtuelle Kommunikation Remote Reference Layer (RRL) Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

11 11 Komponenten in Java Ranko Krvavac – Komponentenmodelle und EJB In Java sind folgende Komponentenmodelle enthalten: im J2SE enthalten: JavaBeans Applets im J2EE enthalten: Webkomponenten: Servlets JavaServer Pages Enterprise JavaBeans Session Beans Entity Beans Message Driven Beans Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

12 12 JavaBeans-Definition Ranko Krvavac – Komponentenmodelle und EJB Welche Kriterien zeichnen JavaBeans aus? Eigenständige, plattformunabhängige und wiederverwendbare Softwarekomponenten Sammlung von APIs zur Entwicklung von Softwarekomponenten Setter- und Getter-Methoden zur Abfrage und Änderung von Objektzuständen müssen definiert sein durch Objektserialisierung kann Persistenz erreicht werden JavaBeans genügen hohen Sicherheitsanforderungen im Vergleich konkurrierenden Komponentenmodellen Verwendung typischerweise als graphische Komponenten für komplexe Anwendungen Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

13 13 JavaBeans-Einsatz Ranko Krvavac – Komponentenmodelle und EJB instantiierte JavaBeans-Klasse erzeugt ein Bean-Objekt Zugriffsmechanismen über Rechnergrenzen hinweg mithilfe weiterer Methoden RMI oder JDBC Einsatz auf der Clientseite: Verwendung typischerweise als graphische Komponenten für komplexe GUI-Anwendungen Einsatz auf der Serverseite: Struts-Framework ist eine Implementierung des MVC-Muster mit JavaBeans (Model), JSP (View) und Servlet (Controller) Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

14 14 Enterprise JavaBeans-Definition Ranko Krvavac – Komponentenmodelle und EJB Wozu dienen EJB? Enterprise JavaBeans ermöglichen eine serverseitige komponentenbasierte Entwicklung von Java-Anwendungen. Clientprogramme (integriert in einer Applikation oder Browser) verwenden Anwendungslogik der EJB. EJB benötigen Laufzeitumgebung – EJB-Container – mit dem gleichzeitig Dienste zu Verfügung gestellt werden durch Einbettung in der Java-Programmiersprache sind EJB sehr mächtig und vielseitig EJB können in beliebig vielfältigen Schichtenmodellen dienen, verlangen aber mindestens ein Drei-Ebenen-Modell. Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

15 15 Enterprise JavaBeans-Aufbau Ranko Krvavac – Komponentenmodelle und EJB Um das Kriterium von verteilten Komponenten zu erfüllen, müssen Home- und Remote-Interface einer EJB-Anwendung das RMI- Interface implementieren bzw. Methoden müssen RMI-kompatibel sein und eine RemoteException abfangen. EJB kommunizieren per JRMP (Java Remote Method Protocol) mit dem Server, können aber in Kompatibilität zu CORBA auch per IIOP (Internet Inter-ORB Protokol) zugreifen. Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans Enterprise-Archive bestehen aus folgenden Modulen mit je einem Deployment Descriptor: EJB-Modulalle EJB inklusive Deployed Code WebmodulServlets, JSP und statische Ressourcen Clientmodulnotwendige Client-Java-Klassen

16 16 Benutzung von EJB 1.Über JNDI das Home-Interface des gewünschten EJB finden und EJB instantiieren 2.Die gewünschte Methode der Bean-Implementierung wird über das Remote-Interface aufgerufen Ranko Krvavac – Komponentenmodelle und EJB Enterprise JavaBeans und Application Server Komponenten Komponentenmodelle Java Enterprise JavaBeans

17 17 EJB vs. JavaBeans Ranko Krvavac – Komponentenmodelle und EJB Enterprise JavaBeans und Application Server JavaBeans implementieren standardmäßig kein Remote- Interface und sind somit keine entfernten Komponenten EJB funktionieren eigenständig in einem Container, JavaBeans benötigen das Struts-Framework EJB benötigen eine mehrschichtige Server-Strukur, JavaBeans integrieren im MVC-Pattern nur das Model ein JavaBean besteht aus einer Datei, EJB benötigen derer mindestens vier EJB stellen serverseitige und komplexe Anwendungen dar EJB stellen ein Paket von Komponenten dar kein Namingservice zur Auffinden von Bean-Komponenten Komponenten Komponentenmodelle Java Enterprise JavaBeans

18 18 WebServices Ranko Krvavac – Komponentenmodelle und EJB Was sind WebServices? modulare internetbasierte Softwarekomponenten einfache und einheitliche Implementierung Informationsaustausch innerhalb verteilter Systeme per Simple Object Access Protocol (SOAP) basierend auf XML SOAP legt fest, wie Remote Procedure Call (RPC) mit XML beschrieben wird unabhängig vom Transportprotokoll mit HTTP keine Firewall-Probleme aber mäßige Performance im Vergleich zu anderen Komponentenmodellen Enterprise JavaBeans und Application Server Die Sun One Technologie und Microsoft.NET sind zwei unterschiedliche Implementierungen von WebServices.

19 19 J2EE und Applikationsserver Einleitung Voraussetzungen Applikationsserver Alternative Software J2EE-Architektur Schichtenarchitektur J2EE-Server EJB-Container Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

20 20 Voraussetzungen Folgende Software muss installiert sein: Java-SDK Java-SDKEE  Gleiche Version notwendig! Java-SDKEE umfasst folgendes: notwendigen APIs grafisches Tool zur Erstellung der EJBs (deploytool) Applikationsserver (Referenzserver von SUN Microsystems) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

21 21 Applikationsserver (1/2) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Definition: Ein Applikationsserver ist ein Server für Anwendungsprogramme. Er stellt eine generische Ablaufumgebung für die Anwendungslogik zur Verfügung. Server im LAN, der von vielen Clients benutzte Anwendungen ausführt. Führt in einer Three-Tier-Architektur (Drei-Schichten-Modell) die Anwendungslogik eines Programms aus, vermittelt zu Datenbankservern und erlaubt den Anschluss vieler Clients. Web Application Server (WAS) für Webanwendungen, der für eine Internet- oder Intranet-Anbindung dynamisch HTML-Seiten erzeugt.

22 22 Applikationsserver (2/2) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Wichtige Services von Applikationsservern: Ressourcen-Management (z. Bsp. Connection-Pooling von Datenbankverbindungen) Persistenz von Objekten Authentifizierung, Authorisierung, sichere Verbindungen Unterstützung verteilter Objekte (distributed objects), etwa mittels RMI oder CORBA Auffinden von Objekten (naming) Unterstützung von (verteilten) Transaktionen

23 23 Einleitung Komponentenmodelle J2EE-Applikationen und EJBs Beispiel Alternative Software Java-Entwicklungswerkzeuge: Forte for Java EE (www.sun.com)www.sun.com JBuilder EE (www.borland.com)www.borland.com Together J (www.togethersoft.com)www.togethersoft.com Applikationsserver: JBoss (www.jboss.org)www.jboss.org Silverstream (www.silverstream.com)www.silverstream.com Bea WebLogic (www.bea.com)www.bea.com IBM Websphere (www.ibm.com)www.ibm.com Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Datenbanken: Oracle SQL Server MySQL Instant-DB Hypersonic

24 24 Schichten-Architektur (1/4) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Multi-Tiers-Architecture Bilden Grundstein von wohldefinierten Anwendungen Einteilung komplexer Software in mehrere logische Schichten Schichten sind rein abstrakt Jede Schicht ist einer bestimmten Aufgabe zugeordnet  Skalierbarkeit, Verlässlichkeit wird besser garantiert Typische Einteilung in Schichten: Präsentationsschicht Beinhaltet Interaktion mit Benutzer. Verwendet werden Java Servlets, Applets, etc. Anwendungsschicht Enthält Komponenten, die das Problem an sich lösen (rechenintensive Aufgaben, etc.) Verwendet werden Sprachen wie Java oder C++. Datenschicht Besteht aus einer oder mehrerer Datenbanken.

25 25 Schichten-Architektur (2/4) Two-Tiers-Architecture ClientServer Frontend und Businesslogik Datenbank Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Nachteile: Businesslogik wird auf Client ausgeführt („fetter“ Client, „dünner“ Server) Hohe Anwendungskosten (Datenbanktreiber auf jedem Client installieren) Änderung an der Datenbank aufwendig (Anpassung des Client notwendig) Änderung im Anwendungsbereich (Neucompilieren des Client notwendig) Netzwerkperformance leidet

26 26 Schichten-Architektur (3/4) Three-Tiers-Architecture ClientDatenbank-Server FrontendDatenbank Application-Server Businesslogik Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Vorteile: Niedrige Installationskosten (Datenbanktreiber werden nur serverseitig installiert und konfiguriert) einfacher Datenbankwechsel (nicht mehr jeder Client muss angepasst werden) Änderungen im Anwendungsbereich erfordern keine Neuentwicklung im Clientbereich Performance

27 27 Schichten-Architektur (4/4) n-Tiers-Architecture ClientDatenbank-Server FrontendDatenbank Funktionsweise: Verallgemeinerung von Three-Tier-Architecture Netzwerk als Pool von verteilten Services (nicht mehr Zugriff eines Client auf einzelnen Server) Jede Ebene der Software sorgt für einen anderen Level an Services zu den Ebenen darunter und daneben. Service 1Service n Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

28 28 J2EE-Server (1/3) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Zwei Arten von Clients können verwendet werden: Web-Browser auf allen gängigen BS vorhanden keine spezielle Administration notwendig Änderungen des Frontend betreffen nur den Webserver alleine Standalone-Applikationen benutzen eigenen Client Applet in einer Anwendung (Mobiltelefon) Vorteil: direkter Zugriff auf Datenbank

29 29 J2EE-Server (2/3) Voraussetzungen für Web-basiertes Frontend: Webserver erforderlich muss dynamische Webseiteninhalte erzeugen können Möglichkeiten (Server-seitigen Techniken): Java Servlet Java Server Pages  Erweiterung des Webservers um Servlet-Engine nötig. (Beispiel: Jacarta-Tomcat zum Apache-Webserver) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

30 30 J2EE-Server (3/3) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

31 31 EJB-Container (1/2) Funktionsweise: Client greift über Java eigene Remote-Method-Invocation (RMI) und das Java Remote Method Protokoll (JRMP) auf den Server zu. Client kommuniziert mit Container und nicht mit der Komponente selbst. Vorteil: Entwickler muss sich nur mit der Geschäftslogik und nicht mit der Implementierung der Schnittstelle (übernimmt Container) auseinandersetzen. Component Contract: EJB-Spezifikationen zu der Schnittstelle Client EJB-Server EJB-Container EJB-Komponente Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

32 32 EJB-Container (2/2) Aufgabe des Application-Servers: EJB-Server stellt für jede EJB-Komponente einen EJB-Container zur Verfügung. Dienste wie Life-Cycle-Management Netzwerkverbindungen Sicherheit Datenbankzugriff zur Verfügung stellen. Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

33 33 Aufgabenverteilung und Entwicklerrollen (1/3) Enterprise Bean-Provider Erstellt sowohl die EJBs als auch nötige Web-Komponenten (JSPs, Servlets). EJBs beinhalten die Geschäftslogik und nutzen dazu die Container-Dienste. EJBs können in Eigenentwicklung entstehen oder zugekauft werden. Application Assembler Setzt aus den einzelnen Software-Komponenten (EJBs) die gewünschte Applikation zusammen. Erstellt oder modifiziert den Deployment-Descriptor der Applikation (XML). EJB Container / Server Provider Stellt den Applikationsserver (JBoss, etc.), also die Laufzeitumgebung, zur Verfügung. Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

34 34 Aufgabenverteilung und Entwicklerrollen (2/3) Deployer Richtet die Applikation auf dem Zielsystem ein. Anpassung der veränderten Hardware, Sicherheit, etc. gegenüber der Testumgebung. System Administrator Ist für die Anwendung nach der Implementierung verantwortlich. Tool Provider Stellt die J2EE-Entwicklungsumgebung und deren Tools zur Verfügung. Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

35 35 Aufgabenverteilung und Entwicklerrollen (3/3) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

36 36 J2EE-Spezifikationen und APIs (1/4) Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API „Java 2 Platform Standard Edition“ (J2SE) erweitert durch die „Java 2 Platform Enterprise Edition“ (J2EE). Komplette Plattform für server-side-computing. Clientseitiges Java hat viele Nachteile (verschiedene Versionen der JavaVirtualMachine). Java als plattformübergreifende Sprache für serverseitige Komponenten ideal.  Komponente muss nur einmal erstellt werden und kann dann in beliebigen Betriebssystemumgebungen ablaufen. Aktuelle J2EE-Spezifikation (v1.4): „Proposed Final Draft“ vom

37 37 J2EE-Spezifikationen und APIs (2/4) J2EE-Platform besteht aus den folgenden APIs: Enterprise Java Beans 2.1 Server-seitiges Komponentenmodell Bietet Portabilität über verschiedene Applikationsserver hinweg. Framework, das verschiedene Dienste für Applikationskomponenten zur Verfügung stellt. Drei EJB-Arten: Session-Beans Entity-Beans Message-Driven Beans Unterstützung für Webservices ab dieser Version. Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

38 38 J2EE-Spezifikationen und APIs (3/4) Java Database Connectivity 2.0 (JDBC) JDBC ermöglicht Zugang zu relationalen Datenbanken mittels SQL. Ab Version 2.0 ist JDBC in zwei Pakete aufgeteilt java.sql (für JDBC-konforme Treiber) und javax.sql (JDBC für J2EE) Java Mail 1.3 Versenden von Mails aus der Applikation möglich. JavaMail-API besteht aus zwei Teilen Application-Level-Interface (benutzt die Anwendung) Service-Provider-Interface Java Naming and Directory Interface (JNDI) Bietet Zugang zu Namens- und Verzeichnisdiensten, um entfernte Objekte zu lokalisieren und zu verwenden. Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

39 39 J2EE-Spezifikationen und APIs (4/4) Die Neuerungen in der Version 1.4 des J2EE betreffen vor allem Web-Services. Java API for XML Messaging (JAXM) ist analog zu JMS für den Nachrichtenaustausch mittels SOAP zuständig. JAX-RPC ist ähnlich wie Java-RMI, benutzt aber SOAP als Protokoll. Damit können Session-, Entity- und Message-Driven Beans Methoden bspw. von Microsoft.net Web-Service verwendet werden. Mischa Gwinner – J2EE und Applikationsserver Enterprise JavaBeans und Application Server Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API

40 40 EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Alexander Kubicki – EJB-Entwicklung und Beispiel EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server

41 41 EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Bestandteile Home-Interface Home-Interface Remote-Interface Remote-Interface EJB-Klasse EJB-Klasse Primary-Key /-Klasse (nur Entity-Bean) Deployment Deskriptoren (EJB-Client) Wrapper um vorhandenen (Java)-Code in EJB umzuwandeln Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server

42 42 Home-Interface -Definiert die Verwaltungmethoden des EJB (Methoden obligatorisch) -Alle Methoden müssen Java-RMI kompatibel sein -Der Rückgabewert der create()-Methode ist das Remote Interface -Anwendung: Der Client sucht, erzeugt und löscht EJB-Instanzen Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

43 43 Remote-Interface -Definiert die Businessmethoden des EJB -Die Rückgabewerte der Methoden müssen Java-RMI kompatibel sein -Jede Methode muss eine java.rmi.RemoteException beinhalten -Jede Methode muss exakt mit der entsprechenden Methode der jeweiligen EJB-Klasse übereinstimmen -Anwendung: Der Client verwendet die Logik der EJB-Instanzen Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

44 44 Vererbung: Home- und Remote- Interface MyClassRemote Interface MyClassHomeHome Interface MyClassBeanBean Implementation Namenskonvention: Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

45 45 EJB-Klasse -Implementiert alle Methoden, die im Home- und Remote-Interface deklariert wurden -Obligatorische Methoden können überladen werden -bei best. EJB-Typen Callback-Methoden zur Container-Steuerung - Bei Entity-Beans (Datenbank): Primärschlüssel für eindeutige Identität gegenüber dem Client ->Primärschlüssel-Klasse für zusammengesetzten Schlüssel Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

46 46 Deployment-Deskriptoren -XML-Dateien, die Verzeichnisinformationen und Benennungen über das EJB und die Applikation enthalten (z.B. Name im WEB -> JNDI, Typ, Transaktionsverhalten) -Bei Entity-Beans (Datenbank): Zuordnung von Java- zu Datenbank-Typen Zuordnung von Java- zu Datenbank-Typen Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

47 47 EJB-Client - JSP oder Servlet oder Standalone-Applikation -Methoden eines EJB verwenden: 1.Über JNDI das Home-Interface des gewünschten EJB finden und EJB instantiieren 2.Die gewünschte Methode über das Remote-Interface aufgerufen -Der Client kann das EJB nie direkt ansprechen. Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

48 48 EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel EJB-Arten Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server

49 49 Vererbung: EJB-Arten Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

50 50 Session-Beans -Sie enthalten Businesslogik -Sie sind mit einem Client assoziiert -sie sind transient (Daten-Persistenz möglich) -Stateless- und Stateful-Session-Beans -Allgemeiner Verwendungszweck: - Jederzeit hat nur ein Client Zugriff auf das EJB - Der EJB-Zustand ist nicht persistent (z.B. nur einige Stunden) -Anwendung: virtueller Einkaufwagen im Online-Shop (kein Entity-EJB) Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

51 51 Stateless-Session-Beans -Instanzen unterscheiden sich nicht voneinander (kein definierter Zustand, keine Attribute) -von beliebigen Clients (auch mehreren) verwendbar -nachfolgenden Methodenaufrufen können zwei verschiedene Instanzen zugeordnet erhalten -Verwendungszweck: - Der EJB-Status enthält keine Daten für einen speziellen Client - Ein Methodenaufruf führt eine Operation durch, die für alle Clients gültig ist (z.B. senden) - Das EJB benutzt die Datenbank nur lesend Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

52 52 Stateful-Session-Beans (1) -Instanzen unterscheiden sich voneinander (definierter Zustand) -Für die Dauer einer Session exklusiv einem Client zugeordnet -Zum Sparen von Ressourcen: Passivierung durch Container Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

53 53 Stateful-Session-Beans (2) -Verwendungszweck: - Der EJB-Status repräsentiert Interaktion zwischen EJB und speziellem Client - Das EJB muß Client-Informationen zwischen Methodenaufrufen speichern - Das EJB vermittelt zwischen Client und anderen Komponenten der Applikation - Das EJB koordiniert Arbeitsablauf mehrerer EJB’s Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

54 54 Entity-Beans (1) -Repräsentieren Daten aus einer Datenbank -Können Businesslogik enthalten -Eindeutige Identität durch Primärschlüssel (-Klasse) -Transaktionsbewusst und Persistent -Container-Managed Persistence (CMP) -SQL-Statements werden vom Container generiert -Bean-Managed Persistence (BMP) -Datenbankzugriffe mit JDBC vom Enwickler generiert -Zum Sparen von Ressourcen: Poolverwaltung durch Container Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

55 55 Entity-Beans (2) -Verwendungszweck: - Das EJB repräsentiert persistente-Daten und keine Methoden (z.B. Mitarbeiter in einer Mitarbeiterdatenbank ) Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

56 56 Message-Driven-Beans -Seit EJB-2.0: Asynchroner Nachrichtenkonsument für Java Message Service API (javax.jms.Message) -> zeitliche Entkopplung von Sender und Empfänger -keine Daten / kein Status für (speziellen) Client -> Instanzen unterscheiden sich nicht voneinander -kein Home- oder Remote-Interface (nur EJB-Klasse) -> Kommunikation Client Bean über javax.jms.Queue / javax jms.Topic javax.jms.Queue / javax jms.Topic -Nachrichten von jeder J2EE-Komponente empfangbar -Verwendungszweck: Serverbelastung senken, da synchroner Nachrichtenaustausch (Session- und Entity-Bean) Empfänger blockiert Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

57 57 EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Entwicklungs-Tools (1) Java-Deploytool Forte for Java EE Together J u.a. Jakarta ANT Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server

58 58 Entwicklungs-Tools (2) Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

59 59 Entwicklungsschritte Die einzelnen Entwicklungsschritte im Überblick:  EJB-Klassen erstellen und kompilieren  Web-Client erstellen  Konfigurationsdateien (XML) erstellen  Verzeichnisstruktur erstellen  Archiv-Dateien (jar, war, ear) erstellen  Anwendung auf Applikations-Server installieren und Beispiel: Einfache Währungsumrechnung (nur Session-Bean) Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

60 60 EJB-Klasse „ConverterBean.java“ (1) package converter.ejb; import java.rmi.RemoteException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import java.math.*; public class ConverterBean implements SessionBean { //Exchange Rate: , 12:56 BigDecimal yenRate = new BigDecimal(" "); BigDecimal dollarRate = new BigDecimal("1.0233"); BigDecimal poundRate = new BigDecimal("0.628"); Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

61 61 EJB-Klasse „ConverterBean.java“ (2)... public BigDecimal euroToDollar(BigDecimal euros) { return euros.multiply(dollarRate); } public BigDecimal euroToYen(BigDecimal euros) { return euros.multiply(yenRate); } public BigDecimal euroToPound(BigDecimal euros) { return euros.multiply(poundRate); } public ConverterBean() {} public void ejbCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext sc) {} } Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

62 62 Remote-Interface „Converter.java“ package converter.ejb; import javax.ejb.EJBObject; import java.rmi.RemoteException; import java.math.*; public interface Converter extends EJBObject { public BigDecimal euroToDollar(BigDecimal dollars) throws RemoteException; public BigDecimal euroToYen(BigDecimal yen) throws RemoteException; public BigDecimal euroToPound(BigDecimal yen) throws RemoteException; } Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

63 63 Home-Interface „ConverterHome.java“ package converter.ejb; import java.io.Serializable; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface ConverterHome extends EJBHome { Converter create() throws RemoteException, CreateException; } Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

64 64 Web-Client „Index.jsp“ (1) <%! private Converter converter = null; public void jspInit() { try { Context ic = new InitialContext(); Object objRef = ic.lookup("converter/MyConverter"); ConverterHome home = (ConverterHome) PortableRemoteObject.narrow (objRef, ConverterHome.class); converter = home.create(); } Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

65 65 Web-Client „Index.jsp“ (2) … <% String amount = request.getParameter("amount"); if ( amount != null && amount.length() > 0 ) { BigDecimal d = new BigDecimal(amount) ; %> Euro are US-Dollar : Japanese Yen : British Pound: Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

66 66 Deployment-Deskriptoren (1) - Konfigurationsdateien nur teilweise nach j2EE standardisiert -Durch spezifische Dateien des Applikationsservers ergänzt -Allgemeingültigen Dateien : web.xml : Web-Bestandteile der Applikation / Startseite in Web ejb-jar.xml : Struktur der EJB’s und deren Interfaces ejb-jar.xml : Struktur der EJB’s und deren Interfaces application.xml : Struktur der vollständigen Anwendung Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

67 67 Deskriptor „web.xml“ (1) Converter Application This is a Currency Exchange Example to demonstrate EJB programming It was written Alexander Kubicki Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

68 68 Deskriptor „web.xml“ (2) appname Converter The name of this application. index.jsp Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

69 69 Deskriptor „ejb-jar.xml“ TheConverter converter.ejb.ConverterHome converter.ejb.Converter converter.ejb.ConverterBean Stateful Container Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

70 70 Deskriptor „application.xml“ ConverterApp Simple Bank Application converter.war converter converter.jar Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

71 71 Deployment-Deskriptoren (2) - Konfigurationsdateien nur teilweise nach j2EE standardisiert -Durch spezifische Dateien des Applikationsservers ergänzt -serverspezifische Dateien (JBoss): jboss.xml : JNDI-Namen und Verzeichnis-Referenzierung jboss.xml : JNDI-Namen und Verzeichnis-Referenzierung jaws.xml : EJB-Datentypen auf Datentypen der Datenbank jaws.xml : EJB-Datentypen auf Datentypen der Datenbank mappen (nur bei Entity-EJB, hier nicht ben ö tigt) jboss-web.xml :f ü r erg ä nzende und serverspezifische jboss-web.xml :f ü r erg ä nzende und serverspezifische Angaben zur web.xml (hier nicht ben ö tigt) Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

72 72 Deskriptor „jboss.xml“ TheConverter converter/MyConverter Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

73 73 Verzeichnisbaum Alexander Kubicki – EJB-Entwicklung und Beispiel -> Dateien bis zur fertigen Applikation mehrfach packen Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

74 74 Datei-Archiv Enterprise Archiv (EAR) File WAR-File JAR-File WAR-File JAR-File META-INF Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

75 75 Deployment EJB ins Deploy-Verzeichnis des Application-Servers -> automatische Implementierung Home-/Remote-Interface -> automatische Generierung Stub- und Skeleton-Klasse Alexander Kubicki – EJB-Entwicklung und Beispiel Remote-Interface Home-Interface Stub Client Server Skeleton (De)-Serialisierung RMI StubSkeleton RMI Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel

76 76 J2EE-Application Alexander Kubicki – EJB-Entwicklung und Beispiel Enterprise JavaBeans und Application Server EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel


Herunterladen ppt "1 Fachhochschule München - 19.11.2002 Software Engineering II - 2002/2003 Enterprise JavaBeans (EJB) und Application Server Gruppe SEII03: Alexander Kubicki."

Ähnliche Präsentationen


Google-Anzeigen