76
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

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

Embed Size (px)

Citation preview

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

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

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

2

Gesamt-Übersicht

Komponentenmodelle und EJB Ranko Krvavac

J2EE und Applikationsserver Mischa Gwinner

EJB-Entwicklung und Beispiel Alexander Kubicki

Enterprise JavaBeans und Application Server

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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.

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

30

J2EE-Server (3/3)

Mischa Gwinner – J2EE und Applikationsserver

Enterprise JavaBeans und Application ServerEinleitung

J2EE-Architektur

Aufgabenverteilung

und Entwicklerrollen

J2EE-Spezifikationen

und API

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

40

EJB-Bestandteile

EJB-Arten

EJB-Entwicklung

EJB-Beispiel

Alexander Kubicki – EJB-Entwicklung und Beispiel

EJB-Entwicklung und Beispiel

Enterprise JavaBeans und Application Server

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

48

EJB-Bestandteile

EJB-Arten

EJB-Entwicklung

EJB-BeispielEJB-Arten

Alexander Kubicki – EJB-Entwicklung und Beispiel

Enterprise JavaBeans und Application Server

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

49

Vererbung: EJB-Arten

Alexander Kubicki – EJB-Entwicklung und Beispiel

Enterprise JavaBeans und Application ServerEJB-Bestandteile

EJB-Arten

EJB-Entwicklung

EJB-Beispiel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

58

Entwicklungs-Tools (2)

Alexander Kubicki – EJB-Entwicklung und Beispiel

Enterprise JavaBeans und Application ServerEJB-Bestandteile

EJB-Arten

EJB-Entwicklung

EJB-Beispiel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

76

J2EE-Application

Alexander Kubicki – EJB-Entwicklung und Beispiel

Enterprise JavaBeans und Application ServerEJB-Bestandteile

EJB-Arten

EJB-Entwicklung

EJB-Beispiel