Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Enterprise JavaBeans (EJB) und Application Server

Ähnliche Präsentationen


Präsentation zum Thema: "Enterprise JavaBeans (EJB) und Application Server"—  Präsentation transkript:

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

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

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

4 Komponenten-Definition
KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server Komponenten-Definition 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 Ranko Krvavac – Komponentenmodelle und EJB

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

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

7 COM / DCOM Was sind COM / DCOM?
Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server COM / DCOM 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) Ranko Krvavac – Komponentenmodelle und EJB

8 Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server CORBA 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 Ranko Krvavac – Komponentenmodelle und EJB

9 RMI-Definition Was bedeutet RMI?
Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server RMI-Definition 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 Ranko Krvavac – Komponentenmodelle und EJB

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

11 Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server Komponenten in Java 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 Ranko Krvavac – Komponentenmodelle und EJB

12 JavaBeans-Definition
Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server JavaBeans-Definition 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 Ranko Krvavac – Komponentenmodelle und EJB

13 Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server JavaBeans-Einsatz 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) Ranko Krvavac – Komponentenmodelle und EJB

14 Enterprise JavaBeans-Definition
Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server Enterprise JavaBeans-Definition 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. Ranko Krvavac – Komponentenmodelle und EJB

15 Enterprise JavaBeans-Aufbau
Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server Enterprise JavaBeans-Aufbau Enterprise-Archive bestehen aus folgenden Modulen mit je einem Deployment Descriptor: EJB-Modul alle EJB inklusive Deployed Code Webmodul Servlets, JSP und statische Ressourcen Clientmodul notwendige Client-Java-Klassen 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. Ranko Krvavac – Komponentenmodelle und EJB

16 Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server 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

17 Komponenten KomponentenmodelleJava Enterprise JavaBeans Enterprise JavaBeans und Application Server EJB vs. JavaBeans 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 Ranko Krvavac – Komponentenmodelle und EJB

18 WebServices Was sind WebServices?
Enterprise JavaBeans und Application Server WebServices 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 Die Sun One Technologie und Microsoft .NET sind zwei unterschiedliche Implementierungen von WebServices. Ranko Krvavac – Komponentenmodelle und EJB

19 J2EE und Applikationsserver
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

20 Voraussetzungen Enterprise JavaBeans und Application Server
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

21 Applikationsserver (1/2)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server Applikationsserver (1/2) 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. Mischa Gwinner – J2EE und Applikationsserver

22 Applikationsserver (2/2)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server Applikationsserver (2/2) 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 Mischa Gwinner – J2EE und Applikationsserver

23 Alternative Software Enterprise JavaBeans und Application Server
Einleitung Komponentenmodelle J2EE-Applikationen und EJBs Beispiel Enterprise JavaBeans und Application Server Alternative Software Java-Entwicklungswerkzeuge: Forte for Java EE ( JBuilder EE ( Together J ( Applikationsserver: JBoss ( Silverstream ( Bea WebLogic ( IBM Websphere ( Datenbanken: Oracle SQL Server MySQL Instant-DB Hypersonic Mischa Gwinner – J2EE und Applikationsserver

24 Schichten-Architektur (1/4)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server Schichten-Architektur (1/4) 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. Mischa Gwinner – J2EE und Applikationsserver

25 Schichten-Architektur (2/4)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server Schichten-Architektur (2/4) Two-Tiers-Architecture Client Server Frontend und Businesslogik Datenbank 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 Mischa Gwinner – J2EE und Applikationsserver

26 Schichten-Architektur (3/4)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server Schichten-Architektur (3/4) Three-Tiers-Architecture Client Application-Server Datenbank-Server Frontend Businesslogik Datenbank 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 Mischa Gwinner – J2EE und Applikationsserver

27 Schichten-Architektur (4/4)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server Schichten-Architektur (4/4) n-Tiers-Architecture Client Service 1 Service n Datenbank-Server Frontend Datenbank 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. Mischa Gwinner – J2EE und Applikationsserver

28 J2EE-Server (1/3) Enterprise JavaBeans und Application Server
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server J2EE-Server (1/3) 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 Mischa Gwinner – J2EE und Applikationsserver

29 J2EE-Server (2/3) Enterprise JavaBeans und Application Server
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

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

31 EJB-Container (1/2) Enterprise JavaBeans und Application Server
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

32 EJB-Container (2/2) Enterprise JavaBeans und Application Server
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

33 Aufgabenverteilung und Entwicklerrollen (1/3)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

34 Aufgabenverteilung und Entwicklerrollen (2/3)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

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

36 J2EE-Spezifikationen und APIs (1/4)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server J2EE-Spezifikationen und APIs (1/4) „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 Mischa Gwinner – J2EE und Applikationsserver

37 J2EE-Spezifikationen und APIs (2/4)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

38 J2EE-Spezifikationen und APIs (3/4)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

39 J2EE-Spezifikationen und APIs (4/4)
Einleitung J2EE-Architektur Aufgabenverteilung und Entwicklerrollen J2EE-Spezifikationen und API Enterprise JavaBeans und Application Server 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

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

41 Bestandteile Home-Interface Remote-Interface EJB-Klasse
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Bestandteile Home-Interface Remote-Interface 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

42 EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

43 Remote-Interface - Definiert die Businessmethoden des EJB
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

44 Vererbung: Home- und Remote- Interface
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Vererbung: Home- und Remote- Interface Namenskonvention: MyClass Remote Interface MyClassHome Home Interface MyClassBean Bean Implementation Alexander Kubicki – EJB-Entwicklung und Beispiel

45 EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

46 Deployment-Deskriptoren
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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 Alexander Kubicki – EJB-Entwicklung und Beispiel

47 EJB-Client - JSP oder Servlet oder Standalone-Applikation
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

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

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

50 Session-Beans - Sie enthalten Businesslogik
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

51 Stateless-Session-Beans
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

52 Stateful-Session-Beans (1)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

53 Stateful-Session-Beans (2)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

54 Entity-Beans (1) - Repräsentieren Daten aus einer Datenbank
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

55 Entity-Beans (2) - Verwendungszweck:
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

56 Message-Driven-Beans
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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 - 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

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

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

59 Entwicklungsschritte
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Entwicklungsschritte Beispiel: Einfache Währungsumrechnung (nur Session-Bean) 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 Alexander Kubicki – EJB-Entwicklung und Beispiel

60 EJB-Klasse „ConverterBean.java“ (1)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

61 EJB-Klasse „ConverterBean.java“ (2)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

62 Remote-Interface „Converter.java“
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

63 Home-Interface „ConverterHome.java“
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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

64 Web-Client „Index.jsp“ (1)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Web-Client „Index.jsp“ (1) import="converter.ejb.*"%> import="javax.naming.*"%> import="javax.rmi.PortableRemoteObject"%> import="java.rmi.RemoteException"%> import="javax.ejb.*"%> import="java.math.*"%> <%! 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

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

66 Deployment-Deskriptoren (1)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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       application.xml : Struktur der vollständigen Anwendung    Alexander Kubicki – EJB-Entwicklung und Beispiel

67 Deskriptor „web.xml“ (1)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Deskriptor „web.xml“ (1) <?xml version="1.0"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" " <web-app> <display-name>Converter Application</display-name> <description> This is a Currency Exchange Example to demonstrate EJB programming It was written Alexander Kubicki </description> Alexander Kubicki – EJB-Entwicklung und Beispiel

68 Deskriptor „web.xml“ (2)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Deskriptor „web.xml“ (2) <context-param> <param-name>appname</param-name> <param-value>Converter</param-value> <description> The name of this application. </description> </context-param> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> Alexander Kubicki – EJB-Entwicklung und Beispiel

69 Deskriptor „ejb-jar.xml“
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Deskriptor „ejb-jar.xml“ <?xml version="1.0"?>  <ejb-jar>   <enterprise-beans> <session> <ejb-name>TheConverter</ejb-name> <home>converter.ejb.ConverterHome</home> <remote>converter.ejb.Converter</remote> <ejb-class>converter.ejb.ConverterBean</ejb-class>   <session-type>Stateful</session-type>   <transaction-type>Container</transaction-type> </session>   </enterprise-beans>  </ejb-jar> Alexander Kubicki – EJB-Entwicklung und Beispiel

70 Deskriptor „application.xml“
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Deskriptor „application.xml“ <?xml version="1.0"?> <application> <display-name>ConverterApp</display-name> <description>Simple Bank Application</description>   <module> <web> <web-uri>converter.war</web-uri> <context-root>converter</context-root> </web> </module> <module> <ejb>converter.jar</ejb> </application> Alexander Kubicki – EJB-Entwicklung und Beispiel

71 Deployment-Deskriptoren (2)
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server 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 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 Angaben zur web.xml (hier nicht benötigt)    Alexander Kubicki – EJB-Entwicklung und Beispiel

72 Deskriptor „jboss.xml“
EJB-Bestandteile EJB-Arten EJB-Entwicklung EJB-Beispiel Enterprise JavaBeans und Application Server Deskriptor „jboss.xml“ <?xml version="1.0"?>  <jboss>   <enterprise-beans> <session> <ejb-name>TheConverter</ejb-name> <jndi-name>converter/MyConverter</jndi-name> </session> </enterprise-beans> </jboss> Alexander Kubicki – EJB-Entwicklung und Beispiel

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

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

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

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


Herunterladen ppt "Enterprise JavaBeans (EJB) und Application Server"

Ähnliche Präsentationen


Google-Anzeigen