Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Audo Duell Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.