Upload
audo-duell
View
111
Download
1
Embed Size (px)
Citation preview
1
Fachhochschule München - 19.11.2002 Software Engineering II - 2002/2003
Enterprise JavaBeans (EJB)und
Application Server
Gruppe SEII03:
Alexander Kubicki
Mischa Gwinner
Ranko Krvavac
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
Komponentenmodelle und EJBKomponenten
Komponentenmodelle
• ORB als Basis
• COM / DCOM
• CORBA
• RMI
JavaBeans
Enterprise JavaBeans
WebServices
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application Server
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
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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 ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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
16
Benutzung von EJB1.1. Über JNDI das Home-Interface des gewünschten EJB finden Über JNDI das Home-Interface des gewünschten EJB finden
und EJB instantiierenund EJB instantiieren
2.2. Die gewünschte Methode der Bean-Implementierung wird Die gewünschte Methode der Bean-Implementierung wird überüber
das Remote-Interface aufgerufendas Remote-Interface aufgerufen
Ranko Krvavac – Komponentenmodelle und EJB
Enterprise JavaBeans und Application ServerKomponenten
Komponentenmodelle
Java
Enterprise JavaBeans
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
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
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
21
Applikationsserver (1/2)
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
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
Applikationsserver (2/2)
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
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
Einleitung
Komponentenmodelle
J2EE-Applikationen
und EJBs
BeispielAlternative Software
Java-Entwicklungswerkzeuge:
• Forte for Java EE (www.sun.com)
• JBuilder EE (www.borland.com)
• Together J (www.togethersoft.com)
Applikationsserver:
• JBoss (www.jboss.org)
• Silverstream (www.silverstream.com)
• Bea WebLogic (www.bea.com)
• IBM Websphere (www.ibm.com)
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application Server
Datenbanken:
• Oracle
• SQL Server
• MySQL
• Instant-DB
• Hypersonic
24
Schichten-Architektur (1/4)
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
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
Schichten-Architektur (2/4)
Two-Tiers-Architecture
Client Server
Frontend undBusinesslogik Datenbank
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
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
Schichten-Architektur (3/4)
Three-Tiers-Architecture
Client Datenbank-Server
Frontend Datenbank
Application-Server
Businesslogik
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
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
Schichten-Architektur (4/4)
n-Tiers-Architecture
Client 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.
Service 1 Service n
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
28
J2EE-Server (1/3)
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
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
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
30
J2EE-Server (3/3)
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
35
Aufgabenverteilung und Entwicklerrollen (3/3)
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
36
J2EE-Spezifikationen und APIs (1/4)
Mischa Gwinner – J2EE und Applikationsserver
Enterprise JavaBeans und Application ServerEinleitung
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 08.11.2002
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
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 ServerEinleitung
J2EE-Architektur
Aufgabenverteilung
und Entwicklerrollen
J2EE-Spezifikationen
und API
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
EJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-BeispielBestandteile
Home-InterfaceHome-Interface Remote-InterfaceRemote-Interface EJB-KlasseEJB-Klasse
Primary-Key /-Klasse (nur Entity-Bean) Deployment Deskriptoren (EJB-Client)
Wrapper um vorhandenen (Java)-Code in EJB Wrapper um vorhandenen (Java)-Code in EJB umzuwandelnumzuwandeln
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application Server
42
Home-Interface
-- Definiert die Verwaltungmethoden des EJBDefiniert die Verwaltungmethoden des EJB (Methoden (Methoden obligatorisch)obligatorisch)
-- Alle Methoden müssen Alle Methoden müssen Java-RMIJava-RMI kompatibel sein kompatibel sein
-- Der Rückgabewert der create()-Methode ist das Der Rückgabewert der create()-Methode ist das Remote InterfaceRemote Interface
-- Anwendung: Der Client sucht, erzeugt und löscht EJB-Instanzen Anwendung: Der Client sucht, erzeugt und löscht EJB-Instanzen
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
43
Remote-Interface
-- Definiert die Businessmethoden des EJBDefiniert die Businessmethoden des EJB
-- Die Rückgabewerte der Methoden müssen Die Rückgabewerte der Methoden müssen Java-RMIJava-RMI kompatibel sein kompatibel sein
-- Jede Methode muss eine Jede Methode muss eine java.rmi.RemoteExceptionjava.rmi.RemoteException beinhalten beinhalten
-- Jede Methode muss exakt mit der entsprechenden Methode der Jede Methode muss exakt mit der entsprechenden Methode der jeweiligen EJB-Klassejeweiligen EJB-Klasse übereinstimmen übereinstimmen
-- Anwendung: Der Client verwendet die Logik der EJB-InstanzenAnwendung: Der Client verwendet die Logik der EJB-Instanzen
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
44
Vererbung: Home- und Remote- Interface
MyClass Remote Interface
MyClassHome Home Interface
MyClassBean Bean Implementation
Namenskonvention:
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
45
EJB-Klasse
-- Implementiert alle Methoden, die im Home- und Remote-Interface Implementiert alle Methoden, die im Home- und Remote-Interface deklariert wurden deklariert wurden
-- Obligatorische Methoden können überladen werdenObligatorische Methoden können überladen werden
-- bei best. EJB-Typen Callback-Methoden zur Container-Steuerungbei best. EJB-Typen Callback-Methoden zur Container-Steuerung
- - Bei Entity-Beans (Datenbank): Bei Entity-Beans (Datenbank): Primärschlüssel für eindeutige Identität Primärschlüssel für eindeutige Identität gegenüber dem Clientgegenüber dem Client -> -> Primärschlüssel-Klasse für Primärschlüssel-Klasse für
zusammengesetzten zusammengesetzten SchlüsselSchlüssel
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
46
Deployment-Deskriptoren
-- XML-Dateien, die Verzeichnisinformationen und Benennungen über XML-Dateien, die Verzeichnisinformationen und Benennungen über das EJB und die Applikation enthaltendas EJB und die Applikation enthalten
(z.B. Name im WEB -> JNDI, Typ, Transaktionsverhalten)(z.B. Name im WEB -> JNDI, Typ, Transaktionsverhalten)
-- Bei Entity-Beans (Datenbank):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 ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
47
EJB-Client
- - JSP oder Servlet oder Standalone-ApplikationJSP oder Servlet oder Standalone-Applikation
-- Methoden eines EJB verwenden:Methoden eines EJB verwenden:
1.1. Über JNDI das Home-Interface des gewünschten EJB finden Über JNDI das Home-Interface des gewünschten EJB finden und EJB instantiierenund EJB instantiieren
2.2. Die gewünschte Methode über das Remote-Interface Die gewünschte Methode über das Remote-Interface aufgerufenaufgerufen
-- Der Client kann das EJB nie direkt ansprechen.Der Client kann das EJB nie direkt ansprechen.
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
48
EJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-BeispielEJB-Arten
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application Server
49
Vererbung: EJB-Arten
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
50
Session-Beans
-- Sie enthalten BusinesslogikSie enthalten Businesslogik
-- Sie sind mit einem Client assoziiertSie sind mit einem Client assoziiert
-- sie sind transient (Daten-Persistenz möglich)sie sind transient (Daten-Persistenz möglich)
-- StatelessStateless- und - und StatefulStateful-Session-Beans-Session-Beans
-- Allgemeiner Verwendungszweck: Allgemeiner Verwendungszweck:
- Jederzeit hat nur ein Client Zugriff auf das EJB - Jederzeit hat nur ein Client Zugriff auf das EJB
- - Der EJB-Zustand ist nicht persistent (z.B. nur einige Der EJB-Zustand ist nicht persistent (z.B. nur einige Stunden)Stunden)
-- Anwendung: virtueller Einkaufwagen im Online-Shop (kein Entity-EJB)Anwendung: virtueller Einkaufwagen im Online-Shop (kein Entity-EJB)
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
51
Stateless-Session-Beans
-- Instanzen unterscheiden sich Instanzen unterscheiden sich nichtnicht voneinander ( voneinander (keinkein definierter definierter Zustand, keine Attribute)Zustand, keine Attribute)
-- von beliebigen Clients (auch mehreren) verwendbarvon beliebigen Clients (auch mehreren) verwendbar
-- nachfolgenden Methodenaufrufen können zwei verschiedene nachfolgenden Methodenaufrufen können zwei verschiedene Instanzen zugeordnet erhaltenInstanzen zugeordnet erhalten
-- Verwendungszweck: Verwendungszweck:
- - Der EJB-Status enthält keine Daten für einen speziellen ClientDer EJB-Status enthält keine Daten für einen speziellen Client
-- Ein Methodenaufruf führt eine Operation durch, die für alle Clients Ein Methodenaufruf führt eine Operation durch, die für alle Clients gültig ist (z.B. E-Mail senden)gültig ist (z.B. E-Mail senden)
- - Das EJB benutzt die Datenbank nur lesendDas EJB benutzt die Datenbank nur lesend
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
52
Stateful-Session-Beans (1)
-- Instanzen unterscheiden sich voneinander (definierter Zustand)Instanzen unterscheiden sich voneinander (definierter Zustand)
-- Für die Dauer einer Session exklusiv einem Client zugeordnet Für die Dauer einer Session exklusiv einem Client zugeordnet
-- Zum Sparen von Ressourcen: Passivierung durch Container Zum Sparen von Ressourcen: Passivierung durch Container
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
53
Stateful-Session-Beans (2)
-- Verwendungszweck: Verwendungszweck:
- - Der EJB-Status repräsentiert Interaktion zwischen EJB und Der EJB-Status repräsentiert Interaktion zwischen EJB und speziellem Clientspeziellem Client
- - Das EJB muß Client-Informationen zwischen Das EJB muß Client-Informationen zwischen Methodenaufrufen Methodenaufrufen speichernspeichern
- - Das EJB vermittelt zwischen Client und anderen Komponenten der Das EJB vermittelt zwischen Client und anderen Komponenten der ApplikationApplikation
- Das EJB koordiniert Arbeitsablauf mehrerer EJB’s- Das EJB koordiniert Arbeitsablauf mehrerer EJB’s
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
54
Entity-Beans (1)
-- Repräsentieren Daten aus einer DatenbankRepräsentieren Daten aus einer Datenbank
-- Können Businesslogik enthalten Können Businesslogik enthalten
-- Eindeutige Identität durch Primärschlüssel (-Klasse) Eindeutige Identität durch Primärschlüssel (-Klasse)
-- Transaktionsbewusst und PersistentTransaktionsbewusst und Persistent
-- Container-Managed Persistence (CMP)Container-Managed Persistence (CMP)
-- SQL-Statements werden vom Container generiertSQL-Statements werden vom Container generiert
-- Bean-Managed Persistence (BMP) Bean-Managed Persistence (BMP)
-- Datenbankzugriffe mit JDBC vom Enwickler generiertDatenbankzugriffe mit JDBC vom Enwickler generiert
-- Zum Sparen von Ressourcen: Poolverwaltung durch Container Zum Sparen von Ressourcen: Poolverwaltung durch Container
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
55
Entity-Beans (2)
-- Verwendungszweck: Verwendungszweck:
- - Das EJB repräsentiert persistente-Daten und keine MethodenDas EJB repräsentiert persistente-Daten und keine Methoden
((z.B. z.B. Mitarbeiter in einer MitarbeiterdatenbankMitarbeiter in einer Mitarbeiterdatenbank ) )
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
56
Message-Driven-Beans
-- Seit EJB-2.0: Asynchroner Nachrichtenkonsument für Java Message Seit EJB-2.0: Asynchroner Nachrichtenkonsument für Java Message Service API (Service API (javax.jms.Messagejavax.jms.Message) )
-> zeitliche Entkopplung von Sender und Empfänger -> zeitliche Entkopplung von Sender und Empfänger
-- keine Daten / kein Status für (speziellen) Clientkeine Daten / kein Status für (speziellen) Client
-> Instanzen unterscheiden sich -> Instanzen unterscheiden sich nichtnicht voneinander voneinander
-- kein Home- oder Remote-Interface (nur EJB-Klasse)kein Home- oder Remote-Interface (nur EJB-Klasse)
->-> Kommunikation Client <-> Bean über Kommunikation Client <-> Bean über
javax.jms.Queuejavax.jms.Queue / / javax jms.Topicjavax jms.Topic
-- Nachrichten von jeder J2EE-Komponente empfangbarNachrichten von jeder J2EE-Komponente empfangbar
-- Verwendungszweck: Serverbelastung senken, da synchroner Verwendungszweck: Serverbelastung senken, da synchroner Nachrichtenaustausch (Session- und Entity-Bean) Empfänger blockiert Nachrichtenaustausch (Session- und Entity-Bean) Empfänger blockiert
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
57
EJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-BeispielEntwicklungs-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
Entwicklungs-Tools (2)
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
59
Entwicklungsschritte
Die einzelnen Entwicklungsschritte im Überblick:Die einzelnen Entwicklungsschritte im Überblick:
EJB-Klassen erstellen und kompilierenEJB-Klassen erstellen und kompilieren
Web-Client erstellenWeb-Client erstellen
Konfigurationsdateien (XML) erstellenKonfigurationsdateien (XML) erstellen
Verzeichnisstruktur erstellenVerzeichnisstruktur erstellen
Archiv-Dateien (jar, war, ear) erstellen Archiv-Dateien (jar, war, ear) erstellen
Anwendung auf Applikations-Server installieren undAnwendung auf Applikations-Server installieren und
Beispiel: Einfache Währungsumrechnung (nur Session-Bean)Beispiel: Einfache Währungsumrechnung (nur Session-Bean)
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
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: 28.09.2002 , 12:56
BigDecimal yenRate = new BigDecimal("120.1500");BigDecimal dollarRate = new BigDecimal("1.0233");BigDecimal poundRate = new BigDecimal("0.628");
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
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 ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
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 ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
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 ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
64
Web-Client „Index.jsp“ (1)<%@page import="converter.ejb.*"%><%@page import="javax.naming.*"%><%@page import="javax.rmi.PortableRemoteObject"%><%@page import="java.rmi.RemoteException"%><%@page import="javax.ejb.*"%><%@page 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
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
65
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
<p><p>
US-Dollar : <%= converter.euroToDollar(d) %>
<p> Japanese Yen : <%= converter.euroToYen(d) %> <p> British Pound: <%= converter.euroToPound(d) %>
</body></html>
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
66
Deployment-Deskriptoren (1)
- - Konfigurationsdateien nur teilweise nach j2EE standardisiert Konfigurationsdateien nur teilweise nach j2EE standardisiert
- Durch spezifische Dateien des Applikationsservers ergänztDurch spezifische Dateien des Applikationsservers ergänzt
- Allgemeingültigen Dateien : Allgemeingültigen Dateien :
web.xmlweb.xml : Web-Bestandteile der Applikation / Startseite in Web : Web-Bestandteile der Applikation / Startseite in Web
ejb-jar.xmlejb-jar.xml : Struktur der EJB’s und deren Interfaces : Struktur der EJB’s und deren Interfaces
application.xmlapplication.xml : Struktur der vollständigen Anwendung : Struktur der vollständigen Anwendung
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
67
Deskriptor „web.xml“ (1)
<?xml version="1.0"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <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
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
68
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
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
69
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
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
70
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> </module>
</application>
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
71
Deployment-Deskriptoren (2)
- - Konfigurationsdateien nur teilweise nach j2EE standardisiert Konfigurationsdateien nur teilweise nach j2EE standardisiert
- Durch spezifische Dateien des Applikationsservers ergänztDurch spezifische Dateien des Applikationsservers ergänzt
- serverspezifische Dateien (JBoss): serverspezifische Dateien (JBoss):
jboss.xml :jboss.xml : JNDI-Namen und Verzeichnis-Referenzierung JNDI-Namen und Verzeichnis-Referenzierung
jaws.xml : jaws.xml : EJB-Datentypen auf Datentypen der Datenbank EJB-Datentypen auf Datentypen der Datenbank
mappen (nur bei Entity-EJB, hier nicht benötigt)mappen (nur bei Entity-EJB, hier nicht benötigt)
jboss-web.xml :jboss-web.xml : für ergänzende und serverspezifischefür ergänzende und serverspezifische
Angaben zur web.xml (hier nicht benötigt)Angaben zur web.xml (hier nicht benötigt)
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
72
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
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
73
Verzeichnisbaum
Alexander Kubicki – EJB-Entwicklung und Beispiel
-> Dateien bis zur fertigen Applikation mehrfach packen-> Dateien bis zur fertigen Applikation mehrfach packen
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
74
Datei-Archiv
Enterprise Archiv (EAR) File
WAR-File JAR-File
WAR-File
WAR-File
JAR-File
META-INF
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
75
Deployment
EJB ins Deploy-Verzeichnis des Application-Servers EJB ins Deploy-Verzeichnis des Application-Servers
-> automatische Implementierung Home-/Remote-Interface-> automatische Implementierung Home-/Remote-Interface
-> automatische Generierung Stub- und Skeleton-Klasse-> automatische Generierung Stub- und Skeleton-Klasse
Alexander Kubicki – EJB-Entwicklung und Beispiel
Remote-Interface
Home-InterfaceStub
Client Server
Skeleton
(De)-Serialisierung
RMI
Stub Skeleton
RMI
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel
76
J2EE-Application
Alexander Kubicki – EJB-Entwicklung und Beispiel
Enterprise JavaBeans und Application ServerEJB-Bestandteile
EJB-Arten
EJB-Entwicklung
EJB-Beispiel