IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET,...

Post on 26-Jun-2020

1 views 0 download

Transcript of IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET,...

1

Lehrstuhl für Wirtschaftsinformatik undSoftwaretechnikProf. Dr. Stefan Eicker

Stefan Malich

Wintersemester 2006/2007

Version 1.6

Integration Engineering - Verteilte Anwendungen auf der Basis von J2EE

2

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

3

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

4

Einführung und Motivation

Literaturempfehlungen (1/2)

• Armstrong, Eric et al. - The J2EE Tutorial v1.4- Sehr gute und umfassende Anleitung zur Entwicklung von

Anwendungen auf der Basis von J2EE- http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

• Sun Microsystems - Java 2 Platform, Enterprise Edition (J2EE) Specification, Version 1.4- Die führende Spezifikation zur J2EE-Plattform- http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf

• Sun Microsystems; Enterprise JavaBeans Specification, Version 2.1- http://java.sun.com/products/ejb/docs.html

• Sun Microsystems; Java Servlet Specification, Version 2.4- http://java.sun.com/products/servlet/download.html

5

Einführung und Motivation

Literaturempfehlungen (2/2)

• Sun Microsystems; JavaServer Pages Specification, Version 2.0- http://java.sun.com/products/jsp/reference/api/index.html

• Singh, I.; Stearns, B.; Johnson, M. et al.; Designing EnterpriseApplications with the J2EE Platform, Second Edition; Addison Wesley; Boston, San Francisco, New York; 2002- http://java.sun.com/blueprints/guidelines/designing_enterprise_a

pplications_2e/index.html• Aufgrund des Umfangs wird ein gezieltes Studium einzelner

Kapitel empfohlen!

6

Einführung und Motivation

Begriffsdefinitionen

• Plattform (engl. platform)- "6. Computer Science The basic technology of a computer

system's hardware and software that defines how a computer is operated and determines what other kinds of software can be used.“ [American Heritage Dictionary of the English Language; http://www.bartleby.com/61/]

- Entwicklung und Ausführung von Software• Entwicklungsplattform

- Engerer Fokus auf die Entwicklung von Software- Beispiele: J2EE, .NET, COBOL, usw.

7

Einführung und Motivation

Relevanz der Vorlesungsinhalte

Die Plattformen J2EE und .NET gehören zu den Grundkenntnissen eines (Wirtschafts-)Informatikers, da diese

Plattformen bei einem Großteil der Entwicklungen von transaktionsbasierten Anwendungen eingesetzt werden.

8

Einführung und Motivation

Anteile bei Neuentwicklungen

J2EE und .NETsonstige

Relative Anteile der Entwicklungsplattformen bei

transaktionsbasierten Neuentwicklungen

15%

85%

Quelle:Gartner/namics ag

9

Einführung und Motivation

Anteile bei existierenden transaktionsbasierten Anwendungen

COBOL/CICSsonstige

25%

75%

Relative Anteile der Entwicklungsplattformen

existierenden transaktionsbasierten

Anwendungen

Quelle:Ovum

10

Einführung und Motivation

Beispiel: SAP

25%

• NetWeaver-Plattform und interne Entwicklungen basieren auf J2EE und ABAP

• J2EE ist die Plattform für Neuentwicklungen

• .NET wird „unterstützt“

DB and OS Abstraction

.NET WebSphere…

People Integration

Com

posi

te A

pplic

atio

n Fr

amew

ork

Process IntegrationIntegration

BrokerBusiness Process

Management

Information IntegrationBusiness

IntelligenceKnowledge

Management

Life Cycle M

anagement

Portal Collaboration

J2EE ABAP

Application Platform

Multi-Channel Access

SAP SAP NetWeaverNetWeaver™™

DB and OS Abstraction

Master Data Management

Quelle: SAP

11

Einführung und Motivation

Beispiel: Siebel

Quelle: Siebel

• Aktuelle Versionen unterstützen J2EE und .NET• Ältere Versionen basierten nur auf .NET• Web Services ermöglichen Interoperabilität zwischen den

beiden Plattformen

12

Einführung und Motivation

Rollen in einer Projektorganisation

Projektmanagement

Anwendungs-entwicklung AnwendungstestAnforderungs-

management Technische Architektur

TesterDesignerAnalyst Softwarearchitekt

Entwickler

Projektmanager

13

Verteilte Softwarearchitekturen

Verantwortlichkeiten und beispielhafte Aufgaben (1/3)

• Analyst- Erstellung eines HTML-

basierten Prototypen

• Softwarearchitekt- Identifikation der

Komponenten der Softwarearchitektur

- In welcher Schicht der Softwarearchitektur wird die Validierung der Benutzereingaben ausgeführt?

• Analyst- Analyse und Definition

der fachlichen Anforderungen

- Erstellung des Fachkonzepts

• Softwarearchitekt- Entwurf der

Softwarearchitektur- Definition der grund-

legenden technischen Entscheidungen

- Definition des projekt-weiten Rahmens für die einzelnen Entwurfs-entscheidungen

14

Verteilte Softwarearchitekturen

Verantwortlichkeiten und beispielhafte Aufgaben (2/3)

• Designer- Entwurf einer

Komponente mit ihren Schnittstellen im Kontext der Softwarearchitektur

• Entwickler- Test im Kontext der

Softwarearchitektur- Test in den

verschiedenen Umgebungen

• Designer- Entwurf eines Teils der

Anwendung bzw. des Systems unter Berücksichtigung der Anforderungen, der Softwarearchitektur und den projektweiten Entwurfsrichtlinien

• Entwickler- Implementierung und

Test der einzelnen Systemkomponenten

15

Verteilte Softwarearchitekturen

Verantwortlichkeiten und beispielhafte Aufgaben (3/3)

• Tester- Definition und

Koordination der Testumgebungen

• Projektmanager- Erstellung des

Arbeitsplans- Erstellung der

Projektorganisation- Anforderungs-

management

• Tester- Planung, Koordination

und Durchführung des Anwendungstests

• Projektmanager- Planung und Steuerung

des Projektes- Koordination der

Projektressourcen- Abstimmung der

fachlichen Anforderungen und Projektprioritäten unter Berücksichtigung der technischen Rahmenbedingungen

16

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

17

Verteilte Objekte und Komponenten

Motivation

Rechner 1

• Verbindung des objekt-orientierten Paradigmas mit den Konzepten verteilter Systeme

• Rechner- und betriebssystemübergreifender Zugriff eines Objekts auf die Methoden eines anderen Objekts

Rechner 2Rechner 1

Objekt A

Objekt B

Objekt A Objekt B

18

Verteilte Objekte und Komponenten

Object Broker Pattern

Rechner 2(Server)

Rechner 1(Client)

Objekt A Objekt B

Server-Proxy

Object RequestBroker

Client-Proxy

Object RequestBroker

Methoden-

aufruf

Request Reply

Methoden-

ergebnis

Reply Request

Methoden-

aufruf

Methoden-

ergebnis

RPC

19

Verteilte Objekte und Komponenten

Implikationen der Verteilung

• Performance- bei einem verteilten

Methodenaufruf erfolgt eine RPC-Kommunikation über das Netzwerk

- Granularität der Objekte: Objekt vs. Komponente

• Zuverlässigkeit- das Netzwerk ist eine

zusätzliche Fehlerquelle• Sicherheit

- die RPC-Kommunikation muss gesichert werden

• Komplexität- höher: RPC-Kommunikation

und Ortstransparenz

Rechner 2(Server)

Rechner 1(Client)

Objekt A Objekt B

Server-Proxy

Object RequestBroker

Client-Proxy

Object RequestBroker

Methoden-

aufruf

Request Reply

Methoden-

ergebnis

Reply Request

Methoden-

aufruf

Methoden-

ergebnis

RPC

20

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

21

Verteilte Softwarearchitekturen

Ziele der Vorlesungseinheit

• Verständnis der Ziele und Eigenschaften einer Software-architektur

• Verständnis und Anwendung des Sichten- und Schichten-konzepts

• Verständnis und Bewertung der Einflussfaktoren von Softwarearchitekturen

• Kenntnis und Identifikation der wesentlichen Architekturstile• Verständnis der Relevanz der Softwarearchitektur innerhalb

des Projektmanagements

22

Verteilte Softwarearchitekturen

Begriffsdefinition: Softwarearchitektur

• Keine einheitliche, allgemein anerkannte Definition• Website des Software Engineering Institutes (SEI) der

Carnegie Mellon Universität- Siehe http://www.sei.cmu.edu/- Veröffentlichte Begriffsdefinitionen > 30

• http://www.sei.cmu.edu/architecture/published_definitions.html- Definition der Besucher der Website > 150

• http://www.sei.cmu.edu/architecture/community_definitions.html

23

Verteilte Softwarearchitekturen

Begriffsdefinition: Softwarearchitektur - Beispiele

• Balzert, Helmut: „Eine Software-Architektur ist eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie Beschreibung ihrer Komponenten.“([Balz96], Seite 639)

• Bass, Len; Clements, Paul; Kazman, Rick: „The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.“([BaCK03], Seite 21)

24

Verteilte Softwarearchitekturen

Eigenschaften einer Softwarearchitektur (1/2)

• Systeme können durch mehrere Strukturen bzw. Anordnungen beschrieben werden- jede Struktur bzw. Anordnung definiert eine Sicht auf das

identische System• Kontext der Vorlesung:

- Softwarearchitektur = Anwendungsarchitektur- Softwarearchitektur ≠ Systemarchitektur (auch: Hardware-

architektur)- Vergleiche: Anwendungsarchitektur vs. Datenarchitektur

Quelle: in Anlehnung an [BaCK03]

25

Verteilte Softwarearchitekturen

Eigenschaften einer Softwarearchitektur (2/2)

• Definition von Softwareelementen und deren Beziehungen- interne Informationen über die Softwareelemente sind nicht

relevant, sofern sie die Beziehung zwischen zwei Elementen nicht beeinflussen (Prinzip der Abstraktion)

- Softwareelemente interagieren über Schnittstellen- Schnittstellen trennen öffentliche Informationen über

Softwareelemente von privaten (internen) Informationen (Prinzip des Information Hiding)

- siehe [Parn1972]

Quelle: in Anlehnung an [BaCK03]

26

Verteilte Softwarearchitekturen

Ziele einer Softwarearchitektur (1/2)

• Entwurf einer Anwendung bzw. eines Softwaresystems auf einem hohen Abstraktionsniveau- Instrument zur Kommunikation- Grundlage und Rahmen für die detaillierten Entwürfe der

einzelnen Softwareelemente• Identifikation der grundsätzlichen Typen von

Softwareelementen- Beispiele: Masken/Webseiten, Module, Datenbanken

• Strukturierung und Gruppierung der Softwareelemente- Orientierungshilfe in der Menge der konkreten Softwareelemente- Grundlage für die Planung innerhalb des Projektmanagements

Quelle: in Anlehnung an [BaCK03] und [Balz96]

27

Verteilte Softwarearchitekturen

Ziele einer Softwarearchitektur (2/2)

• Identifikation von Schnittstellen- innerhalb der Anwendung bzw. des Softwaresystems- zu anderen Anwendungen bzw. Softwaresystemen

• Definition von grundsätzlichen Entwurfsrichtlinien und -entscheidungen- Frühzeitige Entscheidungen, welche nur schwierig und/oder mit

großem Aufwand zu ändern sind- Beispiel: Technologie der Benutzeroberfläche: Windows-Client,

Java-Client, Web-basierter Client

Quelle: in Anlehnung an [BaCK03] und [Balz96]

28

Verteilte Softwarearchitekturen

Sichten auf Softwarearchitekturen (1/2)

• Zahlreiche Sichten auf die identische Softwarearchitektur möglich- Beispiel: Rational Unified Process (RUP) empfiehlt 5 Sichten

(sog. 4+1 Model) (vgl. [Kruc95])• Jede Sicht beschreibt bestimmte Aspekte der

Softwarearchitektur- unterschiedliche Zielgruppen: Projektmanager, Designer,

Entwickler, Tester

29

Verteilte Softwarearchitekturen

Sichten auf Softwarearchitekturen (2/2)

• Notation der Beschreibung- Unterschiede: objektorientierter vs. strukturierter Entwurf- Beispiel: Verwendung der Unified Modelling Language (UML) im

Rational Unified Process (RUP)- Beispiel: Verwendung von Datenflussdiagrammen und

Funktionsbäumen innerhalb der Strukturierte Analyse (nach DeMarco)

30

Verteilte Softwarearchitekturen

Beispiel: Sichten des RUP (1/2)

• Logical View- die wichtigsten Klassen/Komponenten auf Entwurfsebene und

ihre Organisation in Packages und Subsystems- Beziehungen zwischen den Klassen/Komponenten (Nutzung,

Vererbung, usw.)- Organisation der Packages und Subsystems in Schichten

• Implementation View- Verfeinerung und Detaillierung der logischen Sicht- Klassen/Komponenten auf Implementierungsebene und ihre

Organisation in Packages und Subsystems- Beziehungen zwischen den Klassen/Komponenten- Organisation der Packages und Subsystems in Schichten

Quelle: in Anlehnung an [Rati03]

31

Verteilte Softwarearchitekturen

Beispiel: Sichten des RUP (2/2)

• Process View- Beschreibung der Tasks (Prozesse, Threads), deren

Interaktionen und Konfigurationen- Allokation der Objekte und Komponenten zu Tasks

• Deployment View- Beschreibung der physischen Rechnerknoten (Nodes) und ihre

Konfiguration- Allokation der Tasks zu Rechnerknoten

• Use Case View- Use Cases und Scenarios, welche das wesentliche Verhalten

der Softwarearchitektur beschreiben- Beispiel: Was passiert innerhalb der Softwarearchitektur, wenn

der Benutzer den Button X auswählt?Quelle: in Anlehnung an [Rati03]

32

Verteilte Softwarearchitekturen

Softwarearchitektur: logische Sicht

Quelle: in Anlehnung an [Balz96]

Komponente 8

Komponente 10

Komponente 9

Komponente 5

Komponente 6

Komponente 1

Komponente 2

Komponente 3

Komponente 4

Komponente 7

Komponente X nutzt Komponente Y

33

Verteilte Softwarearchitekturen

Softwarearchitektur: logische Sicht mit Schichten

Quelle: in Anlehnung an [Balz96]

Schicht 0

Schicht 1

Schicht 2

Komponente 2.1 Komponente 2.2 Komponente 2.3

Komponente 1.1 Komponente 1.2

Komponente 0.1 Komponente 0.2 Komponente 0.3 Komponente 0.4

Komponente 1.3

Komponente X nutzt Komponente Y

34

Verteilte Softwarearchitekturen

Schichtenarchitekturen

• Gruppierung der Softwareelemente in Schichten- Softwareelemente können innerhalb einer Schicht beliebig

aufeinander zugreifen (vgl. [Dijk1967])- Zwischen den Schichten gelten strengere Zugriffsregeln (vgl.

[Dijk1967])• Schichtenarchitektur mit linearer Ordnung:

- Anordnung der Schichten nach ihrem Abstraktionsniveau- Jede Schicht kann nur auf die nächst niedrigere Schicht

zugreifen• Schichtenarchitektur mit strikter Ordnung:

- Von Schichten mit höherem Abstraktionsniveau kann auf alle Schichten mit niedrigerem Abstraktionsniveau zugegriffen werden – allerdings nicht umgekehrt

Quelle: in Anlehnung an [Balz96]

35

Verteilte Softwarearchitekturen

Definition der Softwarearchitektur in der Entwurfsphase

Planungs-phase

Analyse-phase

Entwurfs-phase

Implement-ierungs-phase

Test-phase

Einführ-ungs-phase

Software-architektur

Entwürfe der Software-elemente

36

Verteilte Softwarearchitekturen

Beispiel: Vorgehensweise in der Entwurfsphase

Abbildung ist bewusst nicht in den Folien enthalten!

37

Verteilte Softwarearchitekturen

Beispiel: Entwurf einer Softwarearchitektur

GUI Service Backend

HTTPS HTML

View

Controller

Ses

sion

Faca

de

Dis

patc

her Kontroll-

modul

Rechen-modul

Datenzu-griffsmodul

Datenlese-modul

EntityBean

Model

FormBean

ActionBean

TransferObject

Stamm-/Bewegungsdaten

Benutzer/Rechte

MQ

Softwareelement X nutzt Softwareelement Y

38

Verteilte Softwarearchitekturen

Einflussfaktoren auf eine Softwarearchitektur nach Bass et al. (1/2)

Quelle: in Anlehnung an [BaCK03]

technische Umgebung• Gegebene Entwicklungs-

plattform (z.B. Mainframe)

Stakeholders• Kunden, Benutzer, Entwickler,

Projektmanager, Wartungs-personal

Softwarearchitektur

Unternehmen• Kenntnisse und Fähigkeiten

der Entwickler• Strategische Ziele (Program

Management)

Kenntisse und Erfahrungen des

Architekten• Projekterfahrungen,

Schulungen

39

Verteilte Softwarearchitekturen

Einflussfaktoren auf eine Softwarearchitektur nach Balzert (2/2)

Quelle: in Anlehnung an [Balz96]

Umgebungs- und Randbedingungen

• Gegebene Plattform-Architektur (z.B. Mainframe)

Einsatzbedingungen• sequenziell• nicht sequenziell (nebenläufig,

verteilt, Echtzeit, parallel)

Softwarearchitektur

Nicht funktionaleProduktanforderungen

• Änderbarkeit, Effizienz, Zuverlässigkeit

Nicht funktionaleQualitätsanforderungen

• Skalierbarkeit, Wieder-verwendbarkeit, Reaktions-zeit

40

Verteilte Softwarearchitekturen

Bewertung von Softwarearchitekturen - Problematik

GUI Service Backend

HTTPS HTML

View

Controller

Ses

sion

Faca

de

Dis

patc

her Kontroll-

modul

Rechen-modul

Datenzu-griffsmodul

Datenlese-modul

EntityBean

Model

FormBean

ActionBean

TransferObject

Stamm-/Bewegungsdaten

Benutzer/Rechte

MQ

gut? schlecht?

2,2 ? 7 von 10 ?

gut? schlecht?

2,2 ? 7 von 10 ?

41

Verteilte Softwarearchitekturen

Bewertung von Softwarearchitekturen - Annahmen

• Keine Bewertung auf Basis einer Skala möglich- es gibt keine „gute“ oder „schlechte“ Softwarearchitektur

• Bewertung kann nur im Kontext von spezifischen Anforderungen erfolgen- Bewertung = Aussage über den Grad der Erfüllung der

spezifizierten Anforderungen

• Beachte die Relevanz der Softwarearchitektur- Entwurfsentscheidungen, welche innerhalb der

Softwarearchitektur getroffen werden, unterstützen oder behindern die Erreichung nahezu aller Qualitätsmerkmale einer nicht-trivialen Anwendung

42

Verteilte Softwarearchitekturen

Funktionsorientierte Strukturierung in drei Schichten

• Präsentation- Menüstrukturen, Bearbeitungsmasken, Berichte- Beispiel: Web-Client, Windows-Client

• Geschäftslogik- Geschäftprozesse, -objekte und -funktionen- Beispiel: Verbuchung einer Wareneingangsrechnung,

Kalkulation eines Verkaufspreises• Datenhaltung

- Verwaltung und Organisation der Daten- Beispiel: relationales Datenbankmanagementsystem, Dateien

Verteilung der Schichten auf unterschiedliche Rechnerknoten?

43

Verteilte Softwarearchitekturen

Verteilung der Schichten: Architekturstile und Muster

• Definition der Verteilung von Präsentation, Geschäftslogik und Datenhaltung- Abhängig von der Entwicklungsplattform, welche bestimmte

Parameter der Verteilung definiert• Grundlegende Architekturstile

- Host/Mainframe-Softwarearchitektur- Client/Server-Softwarearchitektur- Mehrschichtige Softwarearchitektur

44

Verteilte Softwarearchitekturen

Host/Mainframe-Softwarearchitektur

Mainframe/Host

Präsentation

Geschäftslogik

Datenhaltung

• Präsentations-, Geschäftslogik- und Datenhaltungsschicht liegen auf einem Rechnerknoten

• Beachte: Strukturierung in Schichten ist insbesondere bei Altsystemen nicht immer erfolgt

45Server

Verteilte Softwarearchitekturen

Client/Server-Softwarearchitektur

Client

Präsentation

Geschäftslogik

Datenhaltung

• Präsentations- und Datenhaltungsschicht auf unterschiedlichen Rechner-knoten

• Verteilung der Geschäftslogik kann variieren

• „Fat Client“

46

Verteilte Softwarearchitekturen

Variationen der Client/Server-Softwarearchitektur

Server

Client

Präsentation

Geschäftslogik

Datenhaltung

Server

Client

Präsentation

Geschäftslogik 1

Datenhaltung

Geschäftslogik 2

47

Verteilte Softwarearchitekturen

Mehrschichtige Softwarearchitektur

Client

Präsentation

Applikationsserver

Geschäftslogik

Datenserver

Datenhaltung

• Verteilung der Schichten auf mehreren Rechnerknoten• „Thin Client“

48

Verteilte Softwarearchitekturen

Variation der mehrschichtigen Softwarearchitektur

Client

PräsentationApplikationsserver

Geschäftslogik

Datenserver

Datenhaltung

Applikationsserver

Geschäftslogik

49

Verteilte Softwarearchitekturen

Softwarearchitekturen in der Praxis

Client

Präsentation

Applikationsserver

Geschäftslogik

Datenserver

Datenhaltung

Mainframe/Host

Geschäftslogik

Datenhaltung

• Heterogenität durch Variation der „grundlegenden“ Software-architekturen

50

Verteilte Softwarearchitekturen

Best Practices und Patterns

• J2EE- Mehrschichtige Softwarearchitektur- „Core J2EE Patterns: Best Practices and Design Strategies“- http://www.corej2eepatterns.com/index.htm

• .NET- Mehrschichtige Softwarearchitektur- „Patterns & Practices“- http://www.microsoft.com/resources/practices/default.mspx

51

Verteilte Softwarearchitekturen

Anforderungen und Probleme

• Günstige und schnelle Entwicklung von Anwendungen

• Vollständige Integration der unternehmens-internen Anwendungen

• Skalierbarkeit der Anwendungen

• Differenzierte Definition von Sicherheits-eigenschaften

• Hohe Komplexität

• Reduzierung der Entwicklungs- und Betriebskosten

• Schnelle Reaktions-geschwindigkeit

• Öffnung der Unternehmen nach außen - Kunden, Lieferanten,

Partner• Ganzheitliche

Geschäftsprozesse• Kurze Lebenszyklen der

Produkte- bzw. Dienstleistungen

52

Verteilte Softwarearchitekturen

Literaturangaben (1/2)

• [BaCK03] Bass, Len; Clements, Paul; Kazman, Rick; Software Architecture in Practice; 2. Auflage; Addision-Wesley; Boston; 2003- Chapter 1 - The Architecture Business Cycle- Chapter 2 - What is Software Architecture

• [Balz96] Balzert, Helmut; Lehrbuch der Software-Technik: Software-Entwicklung; Spektrum Akademischer Verlag; Heidelberg, Berlin, Oxford; 1996- Kapitel 3.1 Einführung und Überblick (aus Kapitel 3 - Die

Entwurfsphase)• [Dijk1967] Dijkstra, Edsger W.: The structure of the "the"-

multiprogramming system. In: Proceedings of the first ACM symposium on Operating System Principles. ACM Press, New York 1967. S. 10.1-10.6.

53

Verteilte Softwarearchitekturen

Literaturangaben (2/2)

• [Kruc95] Kruchten, Philippe; Architectural Blueprints—The "4+1" View Model of Software Architecture; In, IEEE Software; Vol. 12 No. 6; November 1995; pp. 42-50.

• [Parn1972] Parnas, D. L.: On the Criteria to be used in Decomposing Systems into Modules. In: Communications of the ACM 15 (1972) 12, S. 1053 - 1058.

54

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

55

J2EE-Plattform

Ziele der Vorlesungseinheit

• Verständnis der Elemente und Positionierung der J2EE-Plattform

• Verständnis der Beziehung zwischen der J2EE-Spezifikation und der Umsetzung in Produkten

56

J2EE-Plattform

Java-Plattform

Quelle: in Anlehnung an http://java.sun.com/

• software-basierte Plattform, welche auf verschiedenen Betriebssystemen implementiert ist

• Java Virtual Machine - Windows, Unix, Mainframe

• Laufzeitumgebung / Java APIs- grundlegende Klassen und

Schnittstellen- Abstraktion vom

Betriebssystem (z.B. Dateien, Threads)

Betriebssystem

Java Virtual Machine

Java Anwendung

Laufzeitumgebung /Java APIs

57

J2EE-Plattform

• Definition einer Plattform, welche Kosten und Komplexität von verteilten, mehrschichtigen Anwendungen reduziert

• Definition einer standardisierten Softwarearchitektur, welche aus vier Elementen besteht

Begriffsdefinition: J2EE

Java 2 Platform, Enterprise Edition

Specification

CompatibilityTest Suite Blue Prints

Reference Implementation

Quelle: in Anlehnung an [Sun04a]

58

J2EE-Plattform

• Java 2 Platform, Standard Edition (J2SE)- APIs, Compiler, Tools, Runtimes zur Entwicklung und

Ausführung von Applets und PC-Anwendungen• Java 2 Platform, Enterprise Edition (J2EE)

- basiert auf J2SE- weitere APIs, Tools und Services - Entwicklung und Ausführung von komponenten-basierten,

mehrschichtigen Anwendungen• Java 2 Platform, Micro Edition (J2ME)

- Technologien und Spezifikationen im Umfeld von eingebetteten Systemen und Multimedia-Geräten

- PDAs, Mobiltelefone, TV Set-top boxes usw.

Positionierung von J2EE

Quelle: siehe http://java.sun.com/

59

J2EE-Plattform

• Kein Produkt, sondern eine Spezifikation- Spezifikation vs. Standard

• Veröffentlichung und Weiterentwicklung innerhalb des Java Community Process- Konsortium von IT-Herstellern- Industrie-Standard bzw. De-facto-Standard- aktuelle Version im „Final Release“ ist v1.4

• http://jcp.org/en/jsr/detail?id=151- nächste Version im „Public Review“: Java Platform, Enterprise

Edition 5 (Java EE 5) • http://jcp.org/en/jsr/detail?id=244

• Definition einer standardisierten Softwarearchitektur• Umsetzung in einer Referenzimplementierung und konkreten

Produkten

Java 2 Platform, Enterprise Edition Specification

60

J2EE-Plattform

Referenzimplementation

• Sun Java System Application Server Platform Edition- frei verfügbarer, J2EE-kompatibler

Applikationsserver- ab Version 8 wird die Version 1.4 der

Spezifikation unterstützt- http://java.sun.com/j2ee/1.4/

download.html- Java Platform, Enterprise Edition 5

(Java EE 5) wird in Open Source umgesetzt

- https://glassfish.dev.java.net/GlassFish Open Source Java EE 5 Application Server

61

J2EE-Plattform

J2EE-kompatible Produkte (Beispiele)

• WebSphere Application Server- kommerzieller Applikationsserver- http://www.ibm.com/software/

webservers/appserv/was/- ab Version 6.0 wird die Version 1.4

der Spezifikation unterstützt• BEA WebLogic Server

- kommerzieller Applikationsserver- http://www.bea.com/- Version 8.1 unterstützt die Version

1.3 der Spezifikation

62

J2EE-Plattform

J2EE-kompatible Produkte (Beispiele)

• Oracle Application Server- kommerzieller Applikationsserver- Version 10g wird die Version 1.4 der

Spezifikation unterstützen- http://www.oracle.com/

• SAP Netweaver / SAP Web Application Server- kommerzieller Applikationsserver- Version 6.30 unterstützt die Version

1.3 der Spezifikation- http://www.sap.com/

63

J2EE-Plattform

J2EE-kompatible Produkte (Beispiele)

• JBoss- Open-Source Applikationsserver- Version 4.0 unterstützt die Version 1.4 der Spezifikation- http://www.jboss.org/

64

J2EE-Plattform

Compatibility Test Suite

• Überprüfung einer Anwendung- Java Application Verification Kit (AVK) for

the Enterprise- Werkzeug zur Überprüfung der

Kompatibilität von Anwendungen- Kompatibilität = Anwendung läuft in allen

Applikationsservern• Lizenzierung eines Applikationsservers

- Attribut "J2EE-kompatibel" muss lizenziert und die Compatibility Test Suite muss durchlaufen werden

- http://java.sun.com/j2ee/verified/

65

J2EE-Plattform

• auch: Java BluePrints Program• Richtlinien

- u.a. Konventionen für Dateinamen und Verzeichnisstrukturen• Patterns

- auf der Ebene der Softwarearchitektur- J2EE-Pattern-Katalog- Alur, D.; Crupi, J.; Malks, D.; Core J2EE Patterns - Best

Practices and Design Strategies, Second Edition; Prentice Hall; New York; 2003

- Singh, I.; Stearns, B.; Johnson, M. et al. - Designing Enterprise Applications with the J2EE Platform, Second Edition

• Beispielanwendungen- Java Pet Store Sample Application- Java Adventure Builder Reference Application

BluePrints

66

J2EE-Plattform

J2EE-Pattern-Katalog

Quelle: http://www.corej2eepatterns.com/

67

J2EE-Plattform

Literaturangaben

• [Sun04a] Sun Microsystems; Java 2 Platform, Enterprise Edition (J2EE) Specification, v1.4; http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf- Chapter J2EE.1 - Introduction

• [AlCM03] Alur, D.; Crupi, J.; Malks, D.; Core J2EE Patterns -Best Practices and Design Strategies, Second Edition; Prentice Hall; New York; 2003- siehe auch: http://www.corej2eepatterns.com/

68

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

69

J2EE-basierte Softwarearchitektur

Inhalte des Kapitels "J2EE-basierte Softwarearchitektur"

• Grundlagen der J2EE-basierten Softwarearchitektur• Servlets• JavaServer Pages• Enterprise JavaBeans

70

J2EE-basierte Softwarearchitektur

Ziele der Vorlesungseinheit

• Verständnis der Komponenten einer J2EE-basierten Anwendung

• Verständnis und Bewertung der standardisierten Software-architektur

• Verständnis und Analyse der J2EE-Anwendungs-komponenten und des Container-Konzepts

• Verständnis und Bewertung der Container-Dienste• Verständnis der Paketierung und Installation von J2EE-

Anwendungen• Verständnis der Modulstruktur einer J2EE-Anwendung

71

J2EE-basierte Softwarearchitektur

Begriffsdefinition: Komponente

• Komponente = Komponente bzw. Softwareelement einer Softwarearchitektur

• Beispiele (siehe Kapitel ‚verteilte Softwarearchitekturen‘): - Balzert, Helmut:

„Eine Software-Architektur ist eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie Beschreibung ihrer Komponenten.“([Balz96], Seite 639)

- Bass, Len; Clements, Paul; Kazman, Rick: „The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.“([BaCK03], Seite 21)

72

J2EE-basierte Softwarearchitektur

Komponenten einer J2EE-basierten Anwendung

• Anwendungskomponenten- Komponenten, welche anwendungsspezifische Funktionen

implementieren• Container

- Laufzeitumgebung für Anwendungskomponenten einer J2EE-Architektur

• Dienste- Komponenten, welche allgemeine Funktionen implementieren

und von einem Container bereitgestellt werden- Zugriff über ein Application Programming Interface (API)

• Server- Kann ein oder mehrere Container verwalten

73

J2EE-basierte Softwarearchitektur

Standardisierte Softwarearchitektur

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Datenbank

APIs

APIs

APIs APIs

ApplicationClient

JSP Servlet EJB

Quelle: in Anlehnung an [Sun04a]

Komponente X nutzt Komponente Y

74

J2EE-basierte Softwarearchitektur

Anwendungskomponenten

• Applets- werden in einem Web Browser ausgeführt- besitzen eine grafische Oberfläche

• Application Clients- Java-Anwendungen, welche auf einem PC ausgeführt werden- besitzen i.d.R. eine fenster-basierte, grafische Oberfläche

• Web-Komponenten- Servlets und JavaServer-Pages- können HTTP-basierte Requests bearbeiten

• Enterprise JavaBeans- server-seitige Komponenten, welche i.d.R. die Geschäftslogik

implementieren und im Kontext von Transaktionen aufgerufen werden

Quelle: in Anlehnung an [Sun04a]

75

J2EE-basierte Softwarearchitektur

Container-Konzept

• Laufzeitumgebung für Anwendungskomponenten einer J2EE-Architektur

• Bereitstellung von APIs, welche von den Anwendungs-komponenten genutzt können

• Container nutzen Protokolle, um miteinander zu kommunizieren

• Bereitstellung von Diensten- Verzeichnis- und Namensdienste, Datenbankverbindungen,

Transaktionen, Nachrichtendienste usw.• Trennung der Geschäftslogik von den Diensten der J2EE-

Plattform

Quelle: in Anlehnung an [Sun04a]

76

J2EE-basierte Softwarearchitektur

• J2EE-Spezifikation definiert, welche APIs von den Containern angeboten werden müssen

• Container-Werkzeuge zur Verwaltung des Containers und der Anwendungs-komponenten

• Interpretation eines standardisierten Dateiformats, um die Anwendungskomponenten im Container installieren zu können

Eigenschaften eines Containers

EJB Container

APIs

EJB 4

EJB 3

EJB 2

EJB 1

Beispiel: EJB Container

77

J2EE-basierte Softwarearchitektur

Vorteile des Container-Konzepts

• Implementation von grundlegenden Klassen und Funktionen- APIs der J2SE und J2EE

• Implementation und Kapselung von Kommunikations-protokollen

• Bereitstellung und Wiederverwendung von Diensten- Management von Verbindungen (Connection Pooling)- Unterstützung von Transaktionen- Sicherheitsfunktionen- Lebenszyklusmanagement- Verzeichnisdienste

• Plattform-Unabhängigkeit• Skalierbarkeit

- Kapselung der benötigten Funktionen durch die Container

78

J2EE-basierte Softwarearchitektur

Nachteile des Container-Konzepts

• Abhängigkeit der Anwendung vom Container- Container implementiert die Laufzeitumgebung und Dienste- Absturz des Containers führt zum Absturz der Anwendung

• Abhängigkeit der Anwendung von anderen Anwendungen- Anwendung A kann die Stabilität von Anwendung B gefährden,

wenn beide Anwendungen im identischen Container ausgeführt werden

• Implementation der vom Container geforderten Schnittstellen notwendig- Flexibilität vs. Wiederverwendung

79

J2EE-basierte Softwarearchitektur

Klassifikation der Dienste

• Protokolle und Datenformate- Ziel ist die Interoperabilität zwischen verschiedenen

Anwendungskomponenten und Containern- Gruppen von unterstützten Protokollen und Datenformaten:

• Internet und WWW-Protokolle• Protokolle der Object Management Group (OMG)• Protokolle der Java Technology• Diverse Datenformate

• Application Programming Interfaces (APIs)- auch: Programmierschnittstelle- analog zum Konzept der Protokolle und der ausgetauschten

Nachrichten- Fokus auf Java-basierte APIs

Quelle: in Anlehnung an [Sun04a]

80

J2EE-basierte Softwarearchitektur

IIOP

Dienste der Container - Überblick

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Database

J2SE

J2SE

J2SE J2SE

J2EE J2EE

J2EE

ApplicationClient

JSP Servlet EJB

Quelle: in Anlehnung an [Sun04a] und [Sun04b]

JRMP HTTP(S) JRMPIIOP HTTP(S)

SOAP/HTTP JRMPIIOP HTTP(S)

SOAP/HTTP

JRMPIIOP HTTP(S)

SOAP/HTTP

Client Server

81

J2EE-basierte Softwarearchitektur

Internet und WWW-Protokolle (1/2)

• TCP/IP-Protokollfamilie- TCP und UDP über IP- Unterstützung durch die J2SE, welche die jeweilige

Betriebssystemfunktionalität kapselt- siehe http://www.ietf.org und http://www.rfc-editor.org

• HTTP 1.1- Unterstützung durch die J2SE, welche die jeweilige

Betriebssystemfunktionalität kapselt- Client-seitiges API: java.net Package; Server-seitig: Servlet und

JSP-Interfaces- Web Container muss HTTP-basierte Dienste auf dem Port 80

bereitstellen können- siehe http://www.ietf.org und http://www.rfc-editor.org

82

J2EE-basierte Softwarearchitektur

Internet und WWW-Protokolle (2/2)

• SSL 3.0, TLS 1.0- Web Container muss HTTPS-basierte Dienste auf dem Port 443

bereitstellen können- SSL 3.0: siehe http://wp.netscape.com/eng/ssl3/- TLS 1.0: siehe http://www.ietf.org und http://www.rfc-editor.org

• SOAP 1.1- Unterstützung der SOAP-Spezifikation auf der Basis eines

HTTP-basierten Transportprotokolls- siehe http://www.w3.org/2000/xp/Group/

• WS-I Basic Profile 1.0- Detaillierte Parametrisierung des „Web Service-Protokollstack“

(SOAP, WSDL, UDDI) zur Sicherstellung der Interoperabilität zwischen verschiedenen Web Service-Implementationen

- siehe http://www.ws-i.org

83

J2EE-basierte Softwarearchitektur

Protokolle der Object Management Group (OMG) (1/2)

• Internet Inter-ORB Protocol (IIOP) 1.2- Teil der CORBA-Spezifikation der OMG:

Kommunikationsprotokoll zwischen Object Request Brokern- Verwendung des IIOP als Protokoll für Java Remote Method

Invocation (Java RMI)- siehe http://www.omg.org/cgi-bin/doc?formal/99-10-07

• EJB Interoperability Protocol- Detaillierte Parametrisierung des IIOP zur Nutzung als

Kommunikationsprotokoll zwischen Enterprise JavaBeans (EJB)- siehe Sun Microsystems - Enterprise JavaBeans Specification,

Version 2.1 ([Sun04b])

84

J2EE-basierte Softwarearchitektur

Protokolle der Object Management Group (OMG) (2/2)

• CORBA Interoperable Naming Service Protocol- IIOP-basiertes Protokoll zur Implementation eines verteilten

Namens- und Verzeichnisdienstes- siehe http://www.omg.org/cgi-bin/doc?formal/00-06-19

85

J2EE-basierte Softwarearchitektur

Protokolle der Java Technology

• Java Remote Method Protocol (JRMP)- Protokoll der ersten Versionen der Java Remote Method

Invocation (Java RMI) APIs- siehe http://java.sun.com/j2se/1.4.2/docs/guide/rmi/

86

J2EE-basierte Softwarearchitektur

Datenformate (1/2)

• XML 1.0- Basis für XML-basierte Dokumente und Nachrichten- siehe http://www.w3.org/XML/Core/

• HTML 3.2- Keine direkte Unterstützung durch APIs, aber Web Clients

müssen HTML darstellen können - siehe http://www.w3.org/MarkUp/

• Bildformate- Unterstützung der Formate GIF und JPEG entsprechend der

APIs im Package java.awt.image- http://java.sun.com/j2se/1.4.2/docs/api/java/awt/package-

summary.html

87

J2EE-basierte Softwarearchitektur

Datenformate (2/2)

• Java Archives (JAR)- Standardformat zur Paketierung und Installation von Java-

basierten Anwendungskomponenten- Installation von Applets vs. Installation im Container- siehe http://java.sun.com/j2se/1.4.2/docs/guide/jar/

• Java Class File Format- Datenformat zur Ausführung von Klassen in der Java Virtual

Machine- siehe http://java.sun.com/docs/books/vmspec/

88

J2EE-basierte Softwarearchitektur

IIOP

Dienste der Container - Überblick

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Database

J2SE

J2SE

J2SE J2SE

J2EE J2EE

J2EE

ApplicationClient

JSP Servlet EJB

Quelle: in Anlehnung an [Sun04a] und [Sun04b]

JRMP HTTP(S) JRMPIIOP HTTP(S)

SOAP/HTTP JRMPIIOP HTTP(S)

SOAP/HTTP

JRMPIIOP HTTP(S)

SOAP/HTTP

API

API

API

API

API API

API

89

J2EE-basierte Softwarearchitektur

APIs der J2SE

• Erforderliche Unterstützung der APIs der Java 2 Standard Edition, Version 1.4 durch alle Containertypen- siehe http://java.sun.com/j2se/1.4.2/docs/

• Folgende APIs sind in Bezug auf die J2SE optional, für die J2EE allerdings verbindlich- Java RMI over IIOP (RMI-IIOP)- Java IDL- Java Database Connectivity (JDBC) API- Java Naming and Directory Interface (JNDI) - Java API For XML Processing (JAXP)- Java Authentication and Authorization Service (JAAS)

90

J2EE-basierte Softwarearchitektur

Programmierschnittstelle zwischen einem Container und einer Nachrichten-basierten Middleware

Java Messaging Service (JMS) Specification 1.1

Server-seitige, verteilte KomponentenarchitekturEnterprise JavaBeans (EJB) Specification 2.1

Einbettung von Java-Code und vordefinierten Befehlen in statische HTML-Seiten; JSPs werden mit einem JSP-Compiler in Servlets übersetzt

JavaServer Pages (JSP) Specification 2.0

Erweiterung der Funktionalität eines Web Servers, um dynamische Webseiten auf der Basis der Java-Plattform zu erstellen; Gegenstück zu Technologien wie CGI und ASP

Servlet 2.4Beschreibung der Dienste/SchnittstellenAPI

APIs der J2EE (1/5)

91

J2EE-basierte Softwarearchitektur

Unterstützung der Konvertierung von MIME-Datentypen in Java-Objekte

JavaBeans Activation Framework (JAF) 1.0

Ermöglicht E-Mail-Nachrichten zu erstellen, zu versenden und zu empfangen (MIME, E-Mail Message Stores)

JavaMail 1.3

Programmierschnittstelle zwischen den beteiligten Parteien einer verteilten Transaktion (Anwendungen, Ressourcen Manager und Application Server)

Java Transaction API (JTA) 1.0

Beschreibung der Dienste/SchnittstellenAPI

APIs der J2EE (2/5)

92

J2EE-basierte Softwarearchitektur

Erstellung und Bearbeitung von XML-Dokumenten auf der Basis der Programmiermodelle SAX und DOM; Schnitt-stellen zu einer XSLT-Transformationsengine

Java API for XML Processing (JAXP) 1.2

RPC auf der Basis von SOAPJava API for XML-based RPC (JAX-RPC) 1.1

Beschreibung der Implementierung und Veröffentlichung eines Web Service Endpoints

Web Services for J2EE 1.1

Programmierschnittstelle zu Resource Adaptern, welche die Ausführung von Transaktionen unterstützen

J2EE Connector Architecture 1.5

Beschreibung der Dienste/SchnittstellenAPI

APIs der J2EE (3/5)

93

J2EE-basierte Softwarearchitektur

Programmierstelle für den Zugriff auf einen Verzeichnisdienst für Web Services entsprechend der Spezifikationen ebXML Registry und/oder UDDI

Java API for XML Registries (JAXR) 1.0

Erstellung und Bearbeitung von SOAP-basierten Nachrichten

SOAP with Attachments API for Java (SAAJ) 1.2

Einbindung von Komponenten der J2EE-Architektur in das J2EE Management Model

Java Management Extensions (JMX) 1.2

Steuerung und Überwachung von Komponenten der J2EE-Plattform (J2EE Management Model)

J2EE Management 1.0

Beschreibung der Dienste/SchnittstellenAPI

APIs der J2EE (4/5)

94

J2EE-basierte Softwarearchitektur

Schnittstelle zwischen einem Deployment Tool und einem J2EE-Server

J2EE Deployment 1.1

Definition von neuen java.security.Permission Klassen zur Implementation des Autorisierungsmodells der J2EE-Plattform

Java Authorisation Service Provider Contract for Containers (JACC) 1.0

Beschreibung der Dienste/SchnittstellenAPI

APIs der J2EE (5/5)

95

J2EE-basierte Softwarearchitektur

JaJaNeinNeinJTA 1.0

Nein

Nein

Nein

Nein

Applet

Ja

Ja

Ja

Ja

Web Container

Ja

Nein

Nein

Ja

Applicat-ion Client

JaJMS 1.1

NeinJSP 2.0

NeinServlet 2.4

JaEJB 2.1

EJB Container

API

API-Anforderungen an die Container (1/4)

Quelle: in Anlehnung an [Sun04a]

96

J2EE-basierte Softwarearchitektur

JaJaNeinJaWeb Services for J2EE 1.1

Nein

Nein

Nein

Nein

Applet

Ja

Ja

Ja

Ja

Web Container

Nein

Ja

Ja

Ja

Applicat-ion Client

JaConnector Architecture 1.5

JaJAXP 1.2

JaJAF 1.0

JaJavaMail 1.3

EJB Container

API

API-Anforderungen an die Container (2/4)

Quelle: in Anlehnung an [Sun04a]

97

J2EE-basierte Softwarearchitektur

JaJaNeinJaJMX 1.2

Nein

Nein

Nein

Nein

Applet

Ja

Ja

Ja

Ja

Web Container

Ja

Ja

Ja

Ja

Applicat-ion Client

JaManagement 1.0

JaJAXR 1.0

JaSAAJ 1.2

JaJAX-RPC 1.1

EJB Container

API

API-Anforderungen an die Container (3/4)

Quelle: in Anlehnung an [Sun04a]

98

J2EE-basierte Softwarearchitektur

JaJaNeinNeinJACC 1.0

NeinNeinNeinNeinDeployment 1.1

Applet Web Container

Applicat-ion Client

EJB Container

API

API-Anforderungen an die Container (4/4)

Quelle: in Anlehnung an [Sun04a]

99

J2EE-basierte Softwarearchitektur

Rollen in der Anwendungsentwicklung

• Dedizierte Rollen in der Anwendungs-entwicklung, z.B.- Web Designer- Web Entwickler- EJB Entwickler- Datenbank Entwickler

• Querschnittsrollen, z.B.- Technischer Architekt- Anwendungsarchitekt

• Große Anzahl und großer Umfang der APIs

• Hohe Anforderungen an Anwendungsentwickler

100

J2EE-basierte Softwarearchitektur

Web-Komponenten einer Anwendung

• Servlets• JavaServer Pages (JSP)• Client-seitige Applets, Klassen und Beans

- vor der Ausführung: Übertragung vom Web-Server auf den Client (Web Browser)

- Beans (auch: JavaBeans): Client-seitige Komponentenarchitektur

• Hilfsklassen- für Server-seitige Ausführung (Servlets)

• Statische Dokumente (HTML, Bilder, Videos, usw.)• Metainformationen

- Deployment Descriptor: Konfiguration und Verbindung der einzelnen Web-Komponenten

Quelle: in Anlehnung an [Sun04c]

101

Web Archive (WAR)

J2EE-basierte Softwarearchitektur

• Paketierung der einzelnen Web-Komponenten zur Installation in einem Web-Container

• Datenformat: Web ARchive Format (WAR)

• Vorteile:- Installation eines WAR vs.

Installation einzelner Web-Komponenten

- Konsistenz und Integrität- Paketierung und

Versionierung

Paketierung und Installation

Web Container

J2SE

J2EE

WAR-Datei

Servlets JSPs

Applets, Klassen,Beans

Hilfsklassen

StatischeDokumente

DeploymentDescriptor

102

J2EE-basierte Softwarearchitektur

Module einer J2EE-Anwendung

J2EE Anwendung.EAR Datei

Web Modul.WAR Datei

EJB Modul.JAR Datei

Client Modul.JAR Datei

Resource AdapterModul

.JAR Datei

EJBEJB DDServlet JSP HTML, GIF, usw.Web DD Client

ClassClient DD ResourceClass

ResouceDD

ApplicationDD

1 1

1

11 1

1

N N N N1

1 1 1 1

1 N

1 1

1 N

1 1 1 1

N N N N

103

J2EE-basierte Softwarearchitektur

Literaturangaben

• [Sun04a] Sun Microsystems; Java 2 Platform, Enterprise Edition (J2EE) Specification, v1.4; http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf- Chapter J2EE.2 - Plattform Overview- Chapter J2EE.6 - Application Programming Interface- Chapter J2EE.7 - Interoperability- Chapter J2EE.8 - Application Assembly and Deployment

104

Servlets

Ziele der Vorlesungseinheit

• Verständnis des Lebenszyklus, der Steuerung und der Verwaltung von Servlets

• Verständnis der Verteilungsaspekte von HTTP Server und Web Container

• Verständnis der Dienste des Web Containers in Bezug auf Servlets

• Verständnis des Filtering- und Session-Konzepts

105

Servlets

Positionierung in der Softwarearchitektur

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Datenbank

APIs

APIs

APIs APIs

ApplicationClient

JSP Servlet EJB

Quelle: in Anlehnung an [Sun04a]

Komponente X nutzt Komponente Y

106

Servlets

• Java-basierte Klasse, welche die Funktionalität eines Web Servers erweitert

• Erweiterung: Bereitstellung von dynamischen Inhalten auf der Basis eines Request-and-Response-Programmiermodells

• Unabhängig vom Kommunikationsprotokoll

• Abgeleitete Klassen zur Unterstützung des HTTP

Begriffsdefinition: Servlet

WebContainer

Servlet

HTTP

WebBrowser

Request

Response

Server

Servlet

Client Request

Response

107

Servlets

• Laufzeitumgebung für Servlets

• Steuerung und Verwaltung der Servlets- dynamisches Laden und

Instanziieren von Servlets- Management des

Lebenszyklus von Servlets• Implementation und

Kapselung des HTTP- Bereitstellung von HTTP-

Nachrichten durch Java-Objekte für Servlets

Begriffsdefinition: Servlet Engine / Servlet Container

WebContainer

J2SE

J2EE

Servlet

HTTP

WebBrowser

Request

Response

108

Servlets

• Der HTTP-Server kann im Prozess des Web Containers laufen oder als eigenständiger Prozess ausgeführt werden- Prozess vs. Thread- Bereitstellung von

statischen vs. dynamischen Inhalten

• Eigenständiger HTTP-Server wird über ein API integriert

Verteilungsaspekte von Web Servern

WebContainer

J2SE

J2EE

Servlet

HTTP

WebBrowser

Request

Response

WebContainer

J2SE

J2EE

Servlet

HTTP

WebBrowser

Request

Response

HTT

P Se

rver

API

HTT

P Se

rver

109

Servlets

Interface Servlet

• Schnittstelle, die von allen Servlets implementiert wird- javax.servlet.Servlet

• Methoden zum Management des Lebenszyklus- void init(ServletConfig config) - void destroy()

• Methode zur Verarbeitung von Requests- void service(ServletRequest req, ServletResponse res)

• Methoden zur Ermittlung von Informationen über das Servlet- ServletConfig getServletConfig()- String getServletInfo()

110

Servlets

• Aufruf der Methoden der Schnittstelle Servlet durch den Servlet Container

• Schnittstelle Servlet ist ein Vertrag zwischen dem Servlet Container und dem Servlet - dynamisches Laden und

Instanziieren von Servlets- Management des

Lebenszyklus von Servlets

Steuerung und Verwaltung der Servlets

WebContainer

J2SE

J2EE

Servlet

HTTP

WebBrowser

Request

Responsejavax.servlet.Servlet

111

Servlets

Klasse HTTPServlet (1/2)

• Abstrakte Klasse zur Verarbeitung von Requests auf der Basis des HTTP

• Abgeleitet von der abstrakten Klasse GenericServlet- GenericServlet wiederum implementiert die Schnittstelle Servlet

• Service-Methode wird überschrieben (Overriding)- void service(HttpServletRequest req, HttpServletResponse resp)

112

Servlets

Klasse HTTPServlet (2/2)

• Aufruf einer speziellen Methode entsprechend des Typs des HTTP-Requests durch die Service-Methode- doGet für HTTP GET Requests- doPost für HTTP POST Requests- doPut für HTTP PUT Requests- doDelete für HTTP DELETE Requests- doHead für HTTP HEAD Requests- doOptions für HTTP OPTIONS Requests- doTrace für HTTP TRACE Requests

• doGet- und doPost-Methode werden typischerweise von einem Anwendungsentwickler überschrieben

113

Servlets

Lebenszyklus eines Servlets

• Management des Lebenszyklus erfolgt durch den Servlet Container

• Wenn noch keine Instanz des Servlets existiert- Laden der Servlet-Klasse- Erstellung einer Instanz der Servlet-Klasse- Aufruf der init-Methode des Servlets

• Wenn ein HTTP-Request eintrifft- Aufruf der service-Methode mit den entsprechenden Request-

und Response-Objekten

114

Servlets

Mapping von Requests zu Servlets

• Konfiguration von Web-Komponenten durch Deployment Descriptors

• Mappings von Requests zu Servlets erfolgen auf der Basis von URL-Pfaden und Patterns

• Beispiel:- Mappings im Deployment Descriptor

• /foo/bar/* entspricht servlet1• /baz/* entspricht servlet2• /catalog entspricht servlet3

- Servlet-Aufrufe• Pfad: /foo/bar/index.html - Aufruf: servlet1• Pfad: /baz - Aufruf: servlet2• Pfad: /baz/index.html - Aufruf: servlet2• Pfad: /catalog - Aufruf: servlet3

115

Servlets

HTTP-Request

• Kapselung des HTTP-basierten Client-Requests in einem Java-Objekt- javax.servlet.http.HttpServletRequest- Instanziierung des Objekts durch den Servlet Container

• Zugriff auf die Parameter- HTTP GET Request: Parameter werden an URL gehängt

(Query-String)- HTTP POST Request: Parameter werden im Body transportiert

• Zugriff auf die Header- Bsp. User-Agent, Server, Last-Modified

• Zugriff auf Cookies- Typischerweise nur Namen und Wert des Cookies

116

Servlets

HTTP-Response

• Kapselung der HTTP-basierten Server-Response in einem Java-Objekt- javax.servlet.http.HttpServletResponse

• Instanziierung des Objekts durch den Servlet Container• Zugriff auf den Response-Buffer des Servlet Containers

- Bsp. getBufferSize, setBufferSize, resetBuffer• Zugriff auf die Header

- Bsp. Server, Last-Modified, Content-Type• Zugriff auf den Body

- Bsp. HTML, XML, MIME- Content-Type Header muss entsprechend gefüllt sein!

117

Servlets

Beispiel: Überschreiben der doGet-Methodepublic void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException{

System.out.println(“IE - Methode doGet() wird aufgerufen ...");

// Setzen des HTTP-Headers 'Content Type'resp.setContentType("text/html");

// Hole eine Referenz zum Character StreamPrintWriter out = resp.getWriter();

// Schreibe die HTML-Tags in den Character Streamout.println("<HEAD><TITLE>Integration Engineering</TITLE></HEAD>");

out.println("<BODY>");

out.println("<H1>Teil 1: Verteilte Anwendungen auf der Basis von J2EE</H1>");

out.println("<H2>Kapitel Servlets</H2>");

// Ausgabe zur Indentifikation der Seiteout.println("<P>Das ist die Ausgabe eines Servlets!</P>");

out.println("<BODY>");

// Schließe den Character Streamsout.close();

}

118

Servlets

Sequenz eines Servlet-Aufrufs

1 Benutzer: Eingabe der URL2 Web Browser: HTTP Request wird an Web Server/Web Container gesendet3 Web Container: Überprüfung der URL und Mapping auf das Servlet4 Web Container: Kapselung des Requests und Responses in jeweils einem Objekt

5 Web Container: Wenn noch keine Instanz des Servlets existiert, Laden und Erstellung einer Instanz der Servlet-Klasse, Aufruf der init-Methode des Servlets

6 Web Container: Aufruf der service-Methode des Servlets7 Servlet: Aufruf entsprechenden do-Methode8 Servlet: Schreiben der HTML-Tags in ein Buffer des Reponse-Objekts9 Web Container: HTTP Response wird auf der Basis des Response-Objektes erstellt und versendet

WebContainer

J2SE

J2EE

ServletWeb

BrowserRequest

Response

1

2

3 4 5

Request

Response

67

89

119

Servlets

Dispatching Requests (1/2)

• Dispatching- Weiterleitung von Requests an ein anderes Servlet- Einbindung der Ausgaben eines anderen Servlets

• RequestDispatcher-Objekt kapselt das entsprechende Servlet- RequestDispatcher rd = getRequestDispatcher(String path);- RequestDispatcher rd = getNamedDispatcher(String name);

• Weiterleitung- rd.forward(request, response);

• Einbindung- rd.include(request, response);

120

Servlets

Dispatching Requests (2/2)

WebContainer

J2SE

J2EE

Servlet AWeb

BrowserRequest

Response

1

2

3 4 5

Request

Response

67

89

Servlet B

Servlet C

?

121

Servlets

Filtering (1/2)

• Transformation eines HTTP-Requests und/oder -Responses• Manipulation und Anpassung eines Requests und/oder

Responses bevor oder nachdem ein Servlet aufgerufen wird• Einsatzszenarios

- Logging und Auditing- Kompression- Verschlüsselung- Trigger

• Filter implementieren die Schnittstelle javax.servlet.Filter- doFilter(ServletRequest request, ServletResponse response,

FilterChain chain)• Verkettung von mehreren Filtern

- chain.doFilter()

122

Filter Chain

Servlets

Filtering (2/2)

WebContainer

J2SE

J2EE

ServletWeb

BrowserRequest

Response

1

2

3 4 5

Request

Response

67

89

Filte

r

Filte

r

Filter A Filter B Filter C

123

Response A

Request A

Request B

Response B

Servlets

• HTTP ist ein zustandlosesProtokoll

• Anforderung: mehrere Requests müssen einem Client zugeordnet und in einer Session gruppiert werden

• Mehrere Mechanismen zum Aufbau und der Verfolgung von Session verfügbar- Session Tracking

Mechanisms

Sessions

WebContainer

J2SE

J2EE

Servlet

HTTP

WebBrowser

124

Servlets

Session Tracking Mechanismen

• Cookies- Servlet Container sendet einen Cookie an den Client und der

Client sendet bei jedem nachfolgenden Request den Cookie mit• URL Rewriting

- Erweiterung des URL-Pfads um eine Session-ID, welche vom Servlet Container initial erstellt und bei nachfolgenden Requests ausgewertet wird

- Bsp. http://www.shop.com/index.html;jsessionid=1234• Secure Sockets Layer (SSL) Sessions

- Aufbau und Verfolgung einer Session innerhalb der SSL- Servlet Container nutzt diese Session zur Verfolgung der HTTP-

Requests

125

Servlets

Eigenschaften von Sessions

• Attribute- Zugriff von Servlets auf Attribute im Session-Kontext- Lesen und Schreiben von Attributen

• Timeouts- HTTP unterstützt keine Nachricht zum Beenden einer Session- Verwendung eines Timeouts zur Identifikation einer beendeten

Session- Timeout Period: Konfigurationsparameter des Servlet Containers

126

Servlets

Beispiel: Zugriff auf eine Session in der doGet-Methodepublic void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException{

PrintWriter out = resp.getWriter();

// Hole eine Referenz auf die aktuelle Session. Wenn die Session noch// nicht existiert, wird sie erstellt!HttpSession session = req.getSession(true);

if ( session.isNew() ) {out.println("<H1>Es wurde eine neue Session erstellt. Session ID: " + session.getId() + "</H1>");session.setAttribute("MySessionAttribute", "4711");

}else {

out.println("<H1>Es existiert bereits eine Session. Session ID: " + session.getId() + "</H1>");

}

}

127

Servlets

Beispiel: Zugriff auf Attribute in einer Sessionpublic void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException{

PrintWriter out = resp.getWriter();

// Hole eine Referenz auf die aktuelle Session. Wenn die Session noch// nicht existiert, liegt ein Fehler vor, da die Startseite noch nicht// besucht wurde!HttpSession session = req.getSession(true);if ( session.isNew() ) {

out.println("<H1>Sie müssen zunächst die <a href=" + resp.encodeURL("/vtbdv1/startsession") + ">Startseite</a> aufrufen!</H1>");

// Lösche die zuvor erstellte Session wiedersession.invalidate();

}else {

out.println("<H1>Sie befinden sich in der Session mit ID: " + session.getId() + "</H1><BR>");

out.println("<H1>Der Wert des Sessionattributs 'MySessionAttribute' : " + session.getAttribute("MySessionAttribute") + "</H1><BR>");

}}

128

Servlets

Literaturangaben

• [Sun04c] Sun Microsystems; Java Servlet Specification, Version 2.4, http://java.sun.com/products/servlet/download.html- Chapter SRV.1 Overview- Chapter SRV.2 The Servlet Interface- Chapter SRV.4 The Request- Chapter SRV.5 The Response- Chapter SRV.6 Filtering- Chapter SRV.7 Sessions- Chapter SRV.8 Dispatching Requests- Chapter SRV.11 Mapping Requests to Servlets

129

JavaServer Pages

Ziele der Vorlesungseinheit

• Verständnis des JavaServer Page-Konzepts• Verständnis der Elemente einer JavaServer Page

130

JavaServer Pages

Positionierung in der Softwarearchitektur

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Datenbank

APIs

APIs

APIs APIs

ApplicationClient

JSP Servlet EJB

Quelle: in Anlehnung an [Sun04a]

Komponente X nutzt Komponente Y

131

JavaServer Pages

• Text-basiertes Dokument, welches beschreibt wie dynamische Inhalte für einen Client bereitgestellt werden

• Enthält zwei Arten von Inhalten- statische Inhalte wie z.B.

HTML und XML- dynamische Inhalte,

welche mit sog. JSP Elementen erstellt werden

• Empfohlene Dateiendung- *.jsp

Begriffsdefinition: JavaServer Page (JSP)

WebContainer

J2SE

J2EE

JSP

HTTP

WebBrowser Request

Response

132

JavaServer Pages

• JavaServer Pages werden (spätestens) beim ersten Aufruf in Servlets übersetzt

• Alle folgende Requests führen lediglich zu einem Aufruf des Servlets

• JavaServer Pages Spezifikation basiert auf der Servlet Spezifikation- Steuerung und Verwaltung

der Servlets- HTTP-Request- und

-Response-Objekte- usw.

JavaServer Pages vs. Servlets

WebContainer

J2SE

J2EE

JSPHTTP

WebBrowser Request

ResponseServlet

133

JavaServer Pages

Beispiel: JavaServer Page<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML><HEAD><%@ page language="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>

<TITLE>Integration Engineering</TITLE></HEAD><BODY><H1>Teil 1: Verteilte Anwendungen auf der Basis von J2EE</H1><H2>Kapitel JavaServer Pages</H2><H3>Dynamische HTML-Seite auf der Basis einer JSP</H3><P>Das ist eine dynamische Seite!</P>

<% for (int i=0; i < 20; i++ ) {out.println("<P>Das ist die " + i + ". Ausgabe einer JavaServer Page!</P>");

}%>

</BODY></HTML>

134

JavaServer Pages

Begriffsdefinition: JSP Element

• Steuerung der Übersetzung in ein Servlet• Erstellung und Zugriff auf Objekte• Definition von Methoden und des Kontrollflusses• Zwei Syntaxen möglich

- Standard• Syntax an XML angelehnt, aber nicht „well-formed“

- XML• Zugriff und Validierung mit XML-Parser möglich

135

JavaServer Pages

JSP Elementtypen

• Directives- Anweisungen, welche bei der Übersetzung in ein Servlet durch

die JSP Engine verarbeitet werden• Scripting Elements

- Declarations• Deklaration von Variablen und Methoden innerhalb einer JSP-Seite

- Scriplets• Code-Fragmente, welche während der Verarbeitung des Requests

ausgeführt werden- Expressions

• Ausdrücke, welche in eine Zeichenkette konvertiert und (über den sog. JSP Writer) ausgegeben werden

• Actions- Erstellen, benutzen und/oder verändern Objekte

136

JavaServer Pages

Directives

• Erzeugen keine Ausgaben• Standard Syntax

- <%@ page page_directive_attr_list %>• XML-basierte Syntax

- <jsp:directive.page page_directive_attr_list />• Bsp. Standard Syntax

- <%@ page contentType=”text/html” %>- Konfiguration des MIME-Types in einer Response-Nachricht

137

JavaServer Pages

Scripting Elements - Declarations

• Deklaration von Variablen und Methoden, welche innerhalb der JSP-Seite verwendet werden

• Erzeugen keine Ausgaben• Standard Syntax

- <%! declaration(s) %>• XML-basierte Syntax

- <jsp:declaration> declaration </jsp:declaration>• Bsp. Standard Syntax

- <%! int i = 0; %>- Deklaration und Initialisierung der Variablen i

138

JavaServer Pages

Scripting Elements - Scriplets

• Code-Fragmente, welche während der Verarbeitung des Requests ausgeführt werden

• Scriplets können zuvor deklarierte Variablen modifizieren• Scriplets können Ausgaben generieren• Standard Syntax

- <% scriptlet %>• XML-basierte Syntax

- <jsp:scriptlet> code fragment </jsp:scriptlet>• Bsp. Standard Syntax

- <% i++; %>- Inkrement der Variablen i

139

JavaServer Pages

Scripting Elements - Expressions

• Ausdrücke, welche in eine Zeichenkette konvertiert und (über den sog. JSP Writer) ausgegeben werden

• Standard Syntax- <%= expression %>

• XML-basierte Syntax- <jsp:expression> expression </jsp:expression>

• Bsp. Standard Syntax- <%= (new java.util.Date()).toString() %>- Ausgabe des Datums als Zeichenkette

140

JavaServer Pages

Actions

• Erstellen, benutzen und verändern Objekte• Standard Actions

- in der Spezifikation vordefiniert• Custom Actions

- benutzerdefinierte Actions, welche über einen Erweiterungsmechanismus (sog. Tag Libraries) integriert werden

• Nur eine XML-basierte Syntax- <tag attr1=”attribute value”... >body</tag>

141

JavaServer Pages

Beispiel: Action <jsp:useBean>

• Zuweisung eines Objekts mit einer entsprechenden ID und innerhalb eines definierten Scopes

• Klasse des Objekts muss der JavaBean-Spezifikation entsprechen, d.h. eine JavaBean sein

• Flexible Semantik- Wenn das Objekt noch nicht unter der ID und im definierten

Scope existiert, wird es vor der Zuweisung erstellt• Syntax

- <jsp:useBean id="name" scope="page|request|session|application" typeSpec />

• Beispiel- <jsp:useBean id=”customer” class=”com.myco.Customer” />

142

JavaServer Pages

Beispiel: JavaServer Page mit JSP Elementen (1/2)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<jsp:useBean id="cust" class="com.softec.vtbdv1.beans.Customer"scope="session"><jsp:setProperty name="cust" property="surname" value="Müller"/><jsp:setProperty name="cust" property="firstname" value="Karl-Heinz"/>

</jsp:useBean>

<HTML><HEAD>

<%-- Directives --%><%@ page language="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"session="true"%>

<TITLE>Integration Engineering</TITLE></HEAD>

143

JavaServer Pages

Beispiel: JavaServer Page mit JSP Elementen (2/2)<BODY><H1>Teil 1: Verteilte Anwendungen auf der Basis von J2EE</H1><H2>Kapitel JavaServer Pages</H2><H3>JSP Elementtypen - Beispiele</H3>

<%-- Declarations --%><%! int i = 1; String str = new String("Zeichenkette"); %>

<%-- Scriplets --%><% for (; i < 5; i++) {

out.println("Zeile Nummer: " + i + "<BR><BR>"); } %><% out.println("Der Wert der Variablen 'str' ist: " + str + "<BR><BR>"); %>

<%-- Expressions --%><%= (new java.util.Date()).toString() %><BR><BR>

<%= cust.getSurname() + ", " + cust.getFirstname() %></BODY></HTML>

144

JavaServer Pages

Literaturangaben

• [Sun04c] Sun Microsystems; Java Servlet Specification, Version 2.4, http://java.sun.com/products/servlet/download.html - Chapter JSP.1 Core Syntax and Semantics

145

Enterprise JavaBeans

Ziele der Vorlesungseinheit

• Verständnis der Eigenschaften, Lebenszyklen und Nutzung der unterschiedlichen EJB-Typen

• Verständnis der Dienste des EJB-Containers• Verständnis der Verteilungsaspekte und Schnittstellentypen

der unterschiedlichen EJB-Typen• Verständnis und Bewertung der verschiedenen

Entwurfsaspekte• Verständnis und Bewertung der Schnittstellen- und EJB-

Typen

146

Enterprise JavaBeans

Positionierung in der Softwarearchitektur

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Datenbank

APIs

APIs

APIs APIs

ApplicationClient

JSP Servlet EJB

Quelle: in Anlehnung an [Sun04a]

Komponente X nutzt Komponente Y

147

Enterprise JavaBeans

• Server-seitige Architektur zur Entwicklung von komponenten-basierten und verteilten Anwendungen

• Ausführung innerhalb eines Enterprise JavaBean (EJB) Containers

• Aufruf durch verschiedene potenzielle Clients wie z.B.- Applet Container- Application Client Container- Web Container- EJB Container

Begriffsdefinition: Enterprise JavaBean

Enterprise JavaBeanContainer

J2SE

J2EE

EJBClient Methoden-

aufruf

Methoden-ergebnis

148

Enterprise JavaBeans

• Laufzeitumgebung für EJBs• Steuerung und Verwaltung

der EJBs- dynamisches Laden und

Instanziieren von EJBs- Management des

Lebenszyklus von EJBs• Bereitstellung von Diensten

wie z.B.- Kapselung der

Kommunikation mit Clients- Transaktionen- Persistenz

Begriffsdefinition: Enterprise JavaBean Container

Enterprise JavaBeanContainer

J2SE

J2EE

EJBClient Methoden-

aufruf

Methoden-ergebnis

149

Enterprise JavaBeans

• EJBs enthalten i.d.R. die Geschäftslogik einer Anwendung

• Konfiguration zum Zeitpunkt der Installation im Container

• Zugriff der Clients wird durch den Container vermittelt

• Zwei wesentliche Schnittstellen- zwischen Client und

Container- zwischen EJB und

Container

Eigenschaften der Enterprise JavaBeans

Enterprise JavaBeanContainer

J2SE

J2EE

EJBClient

Component ContractClie

nt V

iew

150

Enterprise JavaBeans

IIOP

Clients der EJBs

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Database

J2SE

J2SE

J2SE J2SE

J2EE J2EE

J2EE

ApplicationClient

JSP Servlet

Quelle: in Anlehnung an [Sun04a] und [Sun04b]

JRMP HTTP(S) JRMPIIOP HTTP(S)

SOAP/HTTP JRMPIIOP HTTP(S)

SOAP/HTTP

JRMPIIOP HTTP(S)

SOAP/HTTP

Client Server

EJB EJB

151

Enterprise JavaBeans

Verteilung der Clients

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Database

J2SE

J2SE

J2SE J2SE

J2EE J2EE

J2EE

ApplicationClient

JSP Servlet

Quelle: in Anlehnung an [Sun04a] und [Sun04b]

Client Server

EJB EJB

JVM

JVM

JVM JVM

152

J2EE Server

JVM

Enterprise JavaBeans

J2EE Server mit Web und EJB Container

Client Server

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Database

J2SE

J2SE

J2SE

J2EE

J2EE

ApplicationClient

JSP Servlet EJB EJB

JVM

JVM

153

Enterprise JavaBeans

Java Remote InterfaceJava InterfaceTyp der Schnittstelle

Pass by ValuePass by ReferenceMethodenparameter und -ergebnis

in einer anderen JVM (auf dem identischen oder einem anderen Rechner)

in der identischen JVMOrt der EJB

jaNeinOrtstransparenzRemote ClientLocal ClientKriterium

Local vs. Remote Clients

154

Enterprise JavaBeans

Aspekte des Entwurfs

• Flexibilität der Verteilung- Entfernte Schnittstellen ermöglichen Ortstransparenz und

unterstützen somit auch Local Clients• Effizienz der Methodenaufrufe

- Entfernte Methodenaufrufe sind „teuer“ (Marshalling, Latenzzeit, Kopieren von Methodenparametern und Ergebnissen, usw.)

• Isolation der Objekte- Keine Seiteneffekte durch Manipulation von gemeinsam

genutzten Objekten (Entkopplung von Client und EJB)• Umfang der Fehlerbehandlung

- Netzwerkkommunikation als zusätzliche Fehlerquelle

Quelle: in Anlehnung an [Sun04b]

155

Enterprise JavaBeans

Granularität der EJBs

Enterprise JavaBeanContainer

J2SE

J2EE

EJB 1

Client Methoden-aufruf

Methoden-ergebnis

EJB 2

EJB 4

EJB 3

Database

12

3

4

SessionFacadePatternvgl. [AlCM03]

1 Remote Interface2 Local Interface3 4

156

Enterprise JavaBeans

• Local und Remote Client View umfassen- Home Interface- Component Interface

• Remote Client View enthält zusätzlich- Metadata Interface

Schnittstellen zwischen Client und Container

Enterprise JavaBeanContainer

J2SE

J2EE

EJBClient

Cie

nt V

iew

Component Contract

157

Enterprise JavaBeans

Home Interface

• Definition von Methoden zum Erstellen, Löschen und Auffinden von EJBs eines Typs

• Definition von Methoden, welche nicht an eine spezielle EJB-Instanz gebunden sind

• Spezifikation der Schnittstelle durch den EJB-Entwickler- Container generiert eine Klasse / Klassen, welche die

Schnittstelle implementiert / implementieren• Typ des Client Views bestimmt von welcher Schnittstelle das

Home Interface abgeleitet werden muss- Remote Client View: javax.ejb.EJBHome- Local Client View: javax.ejb.EJBLocalHome

158

Enterprise JavaBeans

Component Interface

• Definition von Methoden, welche die Geschäftslogik implementieren und vom Client aufgerufen werden können

• Spezifikation der Schnittstelle durch den EJB-Entwickler- Container generiert eine Klasse / Klassen, welche die

Schnittstelle implementiert / implementieren• Typ des Client Views bestimmt von welcher Schnittstelle das

Component Interface abgeleitet werden muss- Remote Client View: javax.ejb.EJBObject- Local Client View: javax.ejb.EJBLocalObject

159

Enterprise JavaBeans

Metadata Interface

• Definition von Methoden zur Abfrage von Metadaten einer EJB- Metadaten bezüglich des Home und Component Interface

• Nutzung der Metadaten durch- Werkzeuge, die bereits im Container installierte EJBs

analysieren und nutzen- Clients, die eine Scripting Language verwenden („dynamischer“

Aufruf von EJBs)- Interface: javax.ejb.EJBMetaData

160

Enterprise JavaBeans

Object Broker Pattern (Wiederholung)

Rechner 2(Server)

Rechner 1(Client)

Objekt A Objekt B

Server-Proxy

Object RequestBroker

Client-Proxy

Object RequestBroker

Methoden-

aufruf

Request Reply

Methoden-

ergebnis

Reply Request

Methoden-

aufruf

Methoden-

ergebnis

RPC

161

Enterprise JavaBeans

Nutzung einer entfernten EJB (1/2)Enterprise JavaBean

Container

J2SE

J2EE

Client

BeanObject

implements javax.ejb.<Typ der Bean>

JVM

J2SE

J2EE

JVM

ClientObject

EJBHome Objectimplements

Home Interface

EJBHome Object Proxy

implements Home Interface

EJBObjectProxy

implementsComponent Interface

EJBObjectimplements

Component Interface

JNDI

lookup( <JNDI-Name> )

create() RMI create()

RMIbusinessMethod() businessMethod()

1

2 3

4

5

162

Enterprise JavaBeans

• Ermittlung des Objektes, welches das Remote Home Interface implementiert- JNDI wird als

Objektspeicher verwendet- Type Cast erfolgt über

statische Methode narrow(), um CORBA-Kompatibilität zu erhalten

• Erstellung und Nutzung der EJB-Instanz

Nutzung einer entfernten EJB (2/2)// Initialisierung des Kontextes für die // folgende JNDI-OperationContext initialContext = new InitialContext();

// Ermittlung des ObjektesObject object = initialContext.lookup( "ejb/com/softec/vtbdv1/CustomerFacadeHome");

// Type Cast des Objektes auf Remote Home // InterfaceCustomerFacadeHome facadeHome = (CustomerFacadeHome)javax.rmi.PortableRemoteObject.narrow( object, CustomerFacadeHome.class );

// Erstellung der EJB-InstanzCustomerFacade facade = facadeHome.create();

// Aufruf der Methode (Geschäftslogik)int i = facade.getNumOfOpenOrders( customerID );

163

Enterprise JavaBeans

Nutzung einer lokalen EJB (1/2)Enterprise JavaBean

Container

J2SE

J2EE

BeanObject

implements javax.ejb.<Typ der Bean>

JVM

ClientObject

EJBLocalHome Object

implementsHome Interface

EJBLocalObjectimplements

Component Interface

JDNI

lookup( <JNDI-Name> )

create() create()

businessMethod() businessMethod()

1

2 3

5

4

164

Enterprise JavaBeans

• Ermittlung des Objektes, welches das Local Home Interface des Objektes implementiert- JNDI wird als

Objektspeicher verwendet- Type Cast auf der Basis

des standard Java-Mechanismus

• Erstellung und Nutzung der EJB-Instanz

Nutzung einer lokalen EJB (2/2)// Initialisierung des Kontextes für die // folgende JNDI-OperationContext initialContext = new InitialContext();

// Ermittlung des Objektes und Java Type CastOrderListLocalHome orderListLocalHome = (OrderListLocalHome)initialContext.lookup("local:ejb/com/softec/vtbdv1/OrderListLocalHome");

// Erstellung der EJB-InstanzOrderListLocal orderList = orderListLocalHome.create();

// Aufruf der Methode (Geschäftslogik)int i = orderList.getNumOfOrders( customerID , OPEN_ORDERS );

165

Enterprise JavaBeans

Erstellung vs. Generierung von Klassen und InterfacesEnterprise JavaBean

ContainerClient

BeanClass

ClientClass

Home Interface

extents javax.ejb.EJBHome

ComponentInterface

extents javax.ejb.EJBObject

EJBHome Class

EJBHome Proxy Class

EJBObjectProxy Class

EJBObjectClass

implements implements

implements implements

javax.ejb.<Typ der

Bean>

implements

Erstellung durch Entwickler

Generierung durch Werkzeug

Teil des J2EE APIs

166

Enterprise JavaBeans

• Vertrag zwischen einer EJB und dem Container, welcher aus zwei Schnittstellen besteht- Methoden, welche die

Geschäftslogik implementieren (vgl. Component Interface)

- Callback-Methoden, welche vom Typ der EJBabhängig sind

• Implementation der Schnittstellen erfolgt durch die sog. Bean Class

Schnittstellen zwischen EJB und Container

Enterprise JavaBeanContainer

J2SE

J2EE

EJBClient

Cie

nt V

iew

Component Contract

167

Enterprise JavaBeans

Typen von Enterprise JavaBeans - Überblick

• Session Beans- implementieren Funktionen, welche i.d.R. von einem Client

innerhalb eines Geschäftsprozesses aufgerufen werden- kurzlebig

• Entity Beans- objekt-orientierte Sicht auf Daten in einer Datenbank- langlebig

• Message-driven Beans- implementieren Funktionen, welche asynchron beim Eintreffen

einer Client Message ausgeführt werden- kurzlebig

168

Enterprise JavaBeans

• Implementation von Funktionen, die von einem Client aufgerufen werden

• Funktionen können im Kontext einer Transaktionausgeführt werden- EJB Container verwaltet

und steuert die Transaktionen (Dienst)

• Zwei Subtypen von Session Beans - stateless- stateful

Eigenschaften von Session Beans

Enterprise JavaBeanContainer

J2SE

J2EE

EJBClient

Cie

nt V

iew

javax.ejb.SessionBean

169

Enterprise JavaBeans

• Verwaltung des Lebenszyklus erfolgt durch den Container- Container ruft die Callback-

Methoden der Schnittstelle javax.ejb.SessionBean auf

• Keine Zuweisung zu einem bestimmten Client- Wiederverwendung von

Instanzen ist möglich• Keine Speicherung von

Zustandsinformationen- Effizienter

Speicherverbrauch

Lebenszyklus von Stateless Session Beans

does not exist method ready

1. Class.newInstance()2. setSessionContext()3. ejbCreate()

ejbRemove()

Quelle: in Anlehnung an [Sun04b]

170

Enterprise JavaBeans

• Verwaltung des Lebenszyklus erfolgt durch Client und Container- Container ruft die Callback-

Methoden der Schnittstelle javax.ejb.SessionBean auf

• Stateful Session Beans können in den Zustand „passive“ übergehen- Serialisierung des

Zustands der Bean auf einen Sekundärspeicher

- Freigabe des Speicherbereichs der Bean

Lebenszyklus von Stateful Session Beans

does not exist method ready

1. Class.newInstance()2. setSessionContext()3. ejbCreate<Method>()

ejbRemove()

passive

ejbP

assi

vate

()

ejbA

ctiv

ate(

)

Quelle: in Anlehnung an [Sun04b]

171

Database Management

System (DBMS)

Enterprise JavaBeans

• Objekt-orientierte Sicht auf Datenstrukturen in einer Datenbank- Primär: relationale

Datenbanken• Sicht des Clients: für jede

Entität in der Datenbank existiert ein Entity Objekt

• Mehrere Clients können gleichzeitig auf ein Entity Objekt zugreifen- Container synchronisiert

den Zugriff mit Hilfe von Transaktionen

Eigenschaften von Entity Beans

Enterprise JavaBeanContainer

J2SE

J2EE

EJB

javax.ejb.EntityBean Database

172

Enterprise JavaBeans

• Verwaltung des Lebenszyklus erfolgt durch Container- Container ruft die Callback-

Methoden der Schnittstelle javax.ejb.EntityBean auf

• Zustand „pooled“- keine aktuelle Assoziation

mit einem Datensatz in der Datenbank

- es wurden keine Daten geladen („leere Instanz“)

Lebenszyklus von Entity Beans

does not exist

pooled

ready

1. Class.newInstance()2. setSessionContext()

ejbCreate<Method>() ejbRemove()

Object.finalize()

Quelle: in Anlehnung an [Sun04b]

ejbActivate()ejbPassivate()

ejbStore()ejbLoad()

173

Enterprise JavaBeans

Finder Methods (1/2)Enterprise JavaBean

Container

J2SE

J2EE

Client

BeanObject

implements javax.ejb.<Typ der Bean>

JVM

J2SE

J2EE

JVM

ClientObject

EJBHome Objectimplements

Home Interface

EJBHome Object Proxy

implements Home Interface

EJBObjectProxy

implementsComponent Interface

EJBObjectimplements

Component Interface

JNDI

lookup( <JNDI-Name> )

create() RMI create()

RMIbusinessMethod() businessMethod()

1

2 3

4

5

findByPrimary(<Primary Key Class>) findByPrimary(<Primary Key Class>)

174

Enterprise JavaBeans

Finder Methods (2/2)

• Bestandteil des Home Interfaces einer Entity Bean- jede Methode definiert einen Weg um ein Entity Objekt oder eine

Menge von Entity-Objekten zu finden• Methodennamen beginnen mit dem Prefix „find“• Verwendung der Methodenargumente bei der Suche

- Abfragen werden deklarativ auf Basis der sog. EJB Query Language im Deployment Descriptor definiert

• Ergebnis ist das EJBObject oder eine Menge der EJBObjects in einer Collection- Collection findByName( String name )- EJB QL: SELECT object(o) FROM CustomerCMP o WHERE

o.name = ?1 • Verbindlich ist die Finder Method findByPrimaryKey()

- <Component Interface> findByPrimary( <Primary Key Class> )

175

Enterprise JavaBeans

Container-Managed Persistence (CMP) Entity Bean

• Entwickler beschreibt persistente Attribute der Bean• Werkzeuge generieren zum Installationszeitpunkt den Code

- Lese-, Speicher- und Löschoperationen auf den Daten in der Datenbank

• Unterschiedliche relationale DBMS können bei Generierung berücksichtigt werden- Beachte: unterschiedliche Dialekte und Erweiterungen des SQL

Standards

176

Enterprise JavaBeans

Bean-Managed Persistence (BMP) Entity Bean

• Entwickler ist für die Definition der persistenten Attribute und des Codes verantwortlich- Implementierung von Code zum Lesen, Speichern und Löschen

von Daten in der Datenbank- Schnittstelle zwischen Container und DBMS basiert i.d.R. auf

SQL• Unterschiedliche DBMS müssen vom Entwickler

berücksichtigt werden- auch nicht-relationale DBMS können verwendet werden

(hierarchisch, XML-basiert)

177

Enterprise JavaBeans

• Konsument einer asynchronen Nachricht, welche zum Aufruf der Message-Driven Bean führt

• Nutzung durch den Client erfolgt durch das Versenden einer Nachricht an einen sog. Messaging Destination- Keine Implementation des

Home, Component oder Metadata Interfaces

Eigenschaften von Message-Driven Beans

Client

Enterprise JavaBeanContainer

J2SE

J2EE

EJB

javax.ejb.MessageDrivenBean

MessagingProvider

178

Zeit

Enterprise JavaBeans

Transaktionen

Enterprise JavaBeanContainer

EJB 1

Client Methoden-aufruf

Methoden-ergebnis

EJB 2

EJB 5

EJB 3

Database

23

4

5

2 EJB 1: executeOrder()

3 EJB 2: calculateInvoice()

4 EJB 3: createInvoice()

5 EJB 4: calculateActualStock()

6 EJB 5: updateStock()

EJB 46

J2SE

J2EE

1

7

1 Container: beginTransaction()

7 EJB Container: EndTransaction()

179

Enterprise JavaBeans

Literaturangaben

• [Sun04b] Sun Microsystems; Enterprise JavaBeans Specification, Version 2.1- Chapter 4 Overview- Chapter 5 Local, Remote, and Web Service Client Views- Chapter 6 Client View of a Session Bean- Chapter 7 Session Bean Component Contract- Chapter 9 Client View of an Entity- Chapter 10 Entity Bean Component Contract for Container-

Managed Persistence- Chapter 12 Entity Bean Component Contract for Bean-Managed

Persistence- Chapter 14 Message-Driven Bean Component Contract- Chapter 17 Support for Transactions- Chapter 19 Support for Distribution and Interoperability

180

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

181

Aspekte der Verteilung von J2EE-Anwendungen

Ziele der Vorlesungseinheit

• Verständnis der Konfigurationskriterien einer mehr-schichtigen, verteilten Anwendung

• Verständnis der grundlegenden Elemente und Konzepte von Konfigurationstopologien

• Verständnis und Bewertung der vorgestellen Konfigurationen

182

Aspekte der Verteilung von J2EE-Anwendungen

Einflussfaktoren auf eine Softwarearchitektur nach Balzert

Quelle: in Anlehnung an [Balz96]

Umgebungs- und Randbedingungen

• Gegebene Plattform-Architektur (z.B. Mainframe)

Einsatzbedingungen• sequenziell• nicht sequenziell (nebenläufig,

verteilt, Echtzeit, parallel)

Softwarearchitektur

Nicht funktionaleProduktanforderungen

• Änderbarkeit, Effizienz, Zuverlässigkeit

Nicht funktionaleQualitätsanforderungen

• Skalierbarkeit, Wieder-verwendbarkeit, Reaktions-zeit

183

Aspekte der Verteilung von J2EE-Anwendungen

Verteilung des Web und EJB Containers

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Datenbank

APIs

APIs

APIs APIs

ApplicationClient

JSP Servlet EJB

Quelle: in Anlehnung an [Sun04a]

184

J2EE Server

JVM

Aspekte der Verteilung von J2EE-Anwendungen

Konfiguration der J2EE Server und Container

Applet Container WebContainer

Enterprise JavaBeanContainer

Applet

Application ClientContainer

Database

J2SE

J2SE

J2SE

J2EE

J2EE

ApplicationClient

JSP Servlet EJB

JVM

JVM

185

Aspekte der Verteilung von J2EE-Anwendungen

Kriterien der Konfiguration (1/3)

• Sicherheit- Trennung des Web Servers vom Applikationsserver durch eine

oder mehrere Firewalls• Screening Router (Protocol Firewall)• Application Gateway (Domain Firewall)

• Geschwindigkeit- Antwortzeit für eine Transaktion unter Berücksichtigung einer

bestimmten Last• Durchsatz

- Anzahl der ausgeführten Transaktionen pro Zeiteinheit innerhalb eines bestimmten Zeitraums

Quelle: vgl. [ABBC04] und [SCHI04]

186

Aspekte der Verteilung von J2EE-Anwendungen

Kriterien der Konfiguration (2/3)

• Skalierbarkeit- Erweiterung einer Konfiguration durch Hinzufügen von

Rechnerkapazität• Hard- und Softwareelemente

- Vertikale Skalierung• zusätzliche Prozesse, identischer Rechnerknoten• ermöglicht Ausfallsicherheit bezüglich der relevanten

Softwareelemente (z.B. Betriebssystem) und des/der Serverprozesses/Serverprozesse

- Horizontale Skalierung• zusätzliche Prozesse auf unterschiedlichen Rechnerknoten• ermöglicht zusätzlich Ausfallsicherheit bezüglich der relevanten

Hardwareelemente

Quelle: vgl. [ABBC04] und [SCHI04]

187

Aspekte der Verteilung von J2EE-Anwendungen

Kriterien der Konfiguration (3/3)

• Verfügbarkeit- Wahrscheinlichkeit, dass die Funktionen einer Anwendung

nutzbar sind, wenn sie benötigt werden• Betriebszeit (Operating Time) vs. Stillstandzeit (Downtime)• Failure vs. Fault

- Maßnahme: durch Redundanz kann sog. Single Point of Failurevermieden werden

• Wartbarkeit- Aktualisierung von Hard- und Softwareelementen

• Ist abhängig von der Verfügbarkeit

Quelle: vgl. [ABBC04] und [SCHI04]

188

Aspekte der Verteilung von J2EE-Anwendungen

• Anbieter eines J2EE-kompatiblen Produkts implementieren entsprechende Werkzeuge und auch weiterführende Funktionen

• Anlehnung der Begriffe und Konfigurationsbeispiele an das ausgewählte Produkt- aber: die Begriffe und

Konzepte sind i.d.R. auf andere Produkte übertragbar!

Konfiguration am Beispiel des WebSphere Application Server

Java 2 Platform, Enterprise Edition

Specification

CompatibilityTest Suite Blue Prints

Reference Implementation

J2EE

189

Aspekte der Verteilung von J2EE-Anwendungen

Begriffsdefinitionen: Server und Node

• Server- J2EE-kompatibler Server

• auch: J2EE Server genannt

- Laufzeitumgebung mit Web und/oder EJB Container

- Ausführung in eigener JVM• Node

- eine Installation eines Servers einschließlich der relevanten Konfigurations-daten

Node

J2EE Server

JVM

WebContainer

Enterprise JavaBeanContainer

Konfigurations-daten

Quelle: in Anlehnung an [SCHI04]

190

Cluster

Cell

Aspekte der Verteilung von J2EE-Anwendungen

Begriffsdefinitionen: Cell und Cluster

• Cluster- logische Gruppierung von

Cells zur Lastverteilung- kann eine oder mehrere

Cells umfassen

• Cell- logische Gruppierung von

mehreren Nodes zu einer administrativen Einheit

- unterschiedliche Cells können unterschiedliche Versionen des J2EE Servers und der Anwendung enthalten

Node

J2EE Server

JVM

WebContainer

Enterprise JavaBeanContainer

Konfigurations-datenNode

J2EE Server

JVM

WebContainer

Enterprise JavaBeanContainer

Quelle: in Anlehnung an [SCHI04]

191

Cluster

Aspekte der Verteilung von J2EE-Anwendungen

• Auch: Load Balancing oder Workload Management

• Basiert auf Konfiguration eines Clusters

• Beispiel: Routing des HTTP-Requests- Anzahl der Cluster Member- Gewichtung des Member- % routed to Server_1 =

weight_1 / (weight_1 + weight_2 + ... + weight_n)

- Verfügbarkeit eines Cluster Members wird berücksichtigt

Verteilung der Last

WebBrowser

HTT

P Se

rver

WebContainer

J2SE

J2EE

Servlet

WebContainer

J2SE

J2EE

Servlet

?

HTTP(S)

HTTP(S)Pl

ug-In

Quelle: in Anlehnung an [SCHI04]

192

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Vertikale Skalierung mit Cluster (1/2)

Database Server

Database

Quelle: in Anlehnung an [SCHI04]

Prot

ocol

Fire

wal

l

Inte

rnet

Application ServerNode

Cluster

Web und EJBContainer(J2EE Server)

Web und EJBContainer(J2EE Server)

Web und EJBContainer(J2EE Server)

Web und EJBContainer(J2EE Server)

Web ServerRedirector Node

HTTPServer

Plug-inD

omai

n Fi

rew

all

193

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Vertikale Skalierung mit Cluster (2/2)

• Mehrere Nodes werden auf einem Rechnerknoten zu einem Cluster zusammengefasst

• Jeder Node enthält die gleiche(n) Anwendung(en)• Vorteile

- Effiziente Nutzung der Rechnerkapazität- Lastverteilung innerhalb des Clusters- Ausfallsicherheit bezüglich der JVM-Prozesse

• Nachteile- Application Server Node ist Single Point of Failure- Web Server Redirector Node ist Single Point of Failure

194

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Horizontale Skalierung mit Cluster (1/2)

Database Server

Database

Quelle: in Anlehnung an [SCHI04]

Prot

ocol

Fire

wal

l

Inte

rnet

Application ServerNode

Application ServerNode

Cluster

Web und EJBContainer(J2EE Server)

Web und EJBContainer(J2EE Server)

Web und EJBContainer(J2EE Server)

Web und EJBContainer(J2EE Server)

Web ServerRedirector Node

HTTPServer

Plug-inD

omai

n Fi

rew

all

195

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Horizontale Skalierung mit Cluster (2/2)

• Cluster Member sind auf mehrere Rechnerknoten verteilt• Vorteile

- Ausfallsicherheit bezüglich der JVM-Prozesse und der Hardware- Lastverteilung innerhalb des Clusters (über mehrere

Rechnerknoten)• Nachteile

- Zusätzliche Hardware- Erhöhter Administrationsaufwand durch zusätzliche

Rechnerknoten- Web Server Redirector Node ist Single Point of Failure

196

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Horizontale Skalierung mit IP Sprayer (1/2)

Database Server

Database

Quelle: in Anlehnung an [SCHI04]

Presentation ServerNode

WebContainer(J2EE Server)

HTTPServer

Plug-in

Presentation ServerNode

WebContainer(J2EE Server)

HTTPServer

Plug-in

Presentation ServerNode

WebContainer(J2EE Server)

HTTPServer

Plug-in

Presentation ServerNode

WebContainer(J2EE Server)

HTTPServer

Plug-in

Prot

ocol

Fire

wal

l

Inte

rnet

Cluster

Application ServerNode

EJBContainer(J2EE Server)

Application ServerNode

EJBContainer(J2EE Server)

Load BalancerBackup

Dom

ain

Fire

wal

lLoad Balancer

NodeIP

Sprayer

IPSprayer

197

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Horizontale Skalierung mit IP Sprayer (2/2)

• IP Sprayer auf dem Load Balancer Node verteilt die HTTP(S)-Requests auf verschiedene Presentation Server Nodes- Load Balancer Backup Node eleminiert den IP Sprayer als

Single Point of Failure• Presentation Server Nodes bilden keinen Cluster

- Web Container erhält einen Request immer vom Web Server Plug-in des identischen Nodes

- aber: Zusammenfassung in Cluster ist auch möglich• Application Server Nodes bilden einen Cluster

- Cluster erscheint als ein logischer J2EE-Server mit EJB Container, welche u.a. die Datenbankzugriffe kapselt

198

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Horizontale Skalierung mit IP Sprayer (2/2)

• Vorteile- Erhöhte Web Server Geschwindigkeit durch die Lastverteilung

auf mehrere Web Server- Erhöhter Durchsatz: mehrere Rechnerknoten verarbeiten die

Client Requests- Kein Single Point of Failure

• Beachte: Datenbank Server wird nicht betrachtet• Presentation Server Nodes sollten auf mehrere Rechnerknoten

verteilt werden

• Nachteile- Zusätzliche Hardware (insbesondere Load Balance Nodes)- Erhöhter Administrationsaufwand durch zusätzliche

Rechnerknoten

199

Cluster

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Mehrfache Zellen (1/2)

Database Server

Database

Quelle: in Anlehnung an [SCHI04]

Prot

ocol

Fire

wal

l

Inte

rnet

Cell 1Web Application Server

Node

WebContainer

HTTPServer

Plug-in

EJBContainer

Cell 2Web Application Server

Node

WebContainer

HTTPServer

Plug-in

EJBContainer

Dom

ain

Fire

wal

lLoad Balancer

NodeIP

Sprayer

Load BalancerBackup

IPSprayer

200

Aspekte der Verteilung von J2EE-Anwendungen

Beispiel: Mehrfache Zellen (2/2)

• Jede Zelle ist eine administrative Einheit und enthält genau eine Version der Anwendung und des J2EE Servers

• IP Sprayer arbeitet auf der Ebene der Zellen• Vorteile

- Isolation von Softwarefehlern insbesondere bei der Installation von

• neuen Versionen der Anwendung• neuen Versionen des J2EE Servers• Fixes und Patches

- Erhöhte Geschwindigkeit, da keine Kommunikation zwischen den Prozessen von unterschiedlichen Zellen

• Nachteile- Erhöhter Administrationsaufwand, da jede Zelle eine eigene

administrative Einheit ist

201

Aspekte der Verteilung von J2EE-Anwendungen

Literaturangaben

• [SCHI04] Sadler, Carla; Clifford, Lee; Heyward, Jeff; Iwamoto, Arihiro; Jakusz, Noelle; Laursen, Lars Bek; Lee, WonYoung; Mauny, Isabell; Rabbi, Shafkat; Sanchez, Ascension; IBM WebSphere Application Server V5.1 System Management and Configuration; WebSphere Handbook Series; 2004; http://www.redbooks.ibm.com/abstracts/sg246195.html?Open- Chapter 2. IBM WebSphere Application Server architecture- Chapter 3. Topology selection

202

Zusammenfassung und Ausblick

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

203

Zusammenfassung und Ausblick

Rollen in einer Projektorganisation

Projektmanagement

Anwendungs-entwicklung AnwendungstestAnforderungs-

management Technische Architektur

TesterDesignerAnalyst Softwarearchitekt

Entwickler

Projektmanager

204

Literaturverzeichnis

Verwendete Literatur und Quellen (1/4)

• [AlCM03] Alur, D.; Crupi, J.; Malks, D.; Core J2EE Patterns - Best Practices and Design Strategies, Second Edition; Prentice Hall; New York; 2003

• [ABBC04] Armstrong, Eric; Ball, Jennifer; Bodoff, Stephanie;Carson, Debbie Bode; Evans, Ian; Green, Dale; Haase, Kim; Jendrock, Eric Carson, Debbie Bode; Evans, Ian; Green, Dale; Haase, Kim; Jendrock, Eric; The J2EE Tutorial v1.4; Sun Microsystems; 2004; http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

• [Balz96] Balzert, Helmut; Lehrbuch der Software-Technik: Software-Entwicklung; Spektrum Akademischer Verlag; Heidelberg, Berlin, Oxford; 1996

205

Literaturverzeichnis

Verwendete Literatur und Quellen (2/4)

• [BaCK03] Bass, Len; Clements, Paul; Kazman, Rick; Software Architecture in Practice; 2. Auflage; Addision-Wesley; Boston; 2003

• [Kruc95] Kruchten, Philippe; Architectural Blueprints—The"4+1" View Model of Software Architecture; In,IEEE Software; Vol. 12 No. 6; November 1995;pp. 42-50

• [Rati03] Rational; The Rational Unified Process; Version2003.06.13; http://www.ibm.com/developerworks/rational/products/rup/

206

Literaturverzeichnis

Verwendete Literatur und Quellen (3/4)

• [SCHI04] Sadler, Carla; Clifford, Lee; Heyward, Jeff;Iwamoto, Arihiro; Jakusz, Noelle; Laursen, Lars Bek; Lee, WonYoung; Mauny, Isabell; Rabbi, Shafkat; Sanchez, Ascension; IBM WebSphere Application Server V5.1 System Management and Configuration; WebSphere Handbook Series; 2004; http://www.redbooks.ibm.com/abstracts/sg246195.html?Open

• [Sun04a] Sun Microsystems; Java 2 Platform, Enterprise Edition (J2EE) Specification, v1.4; http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf

• [Sun04b] Sun Microsystems; Enterprise JavaBeans Specification, Version 2.1;http://java.sun.com/products/ejb/docs.html

207

Literaturverzeichnis

Verwendete Literatur und Quellen (4/4)

• [Sun04c] Sun Microsystems; Java Servlet Specification, Version 2.4;http://java.sun.com/products/servlet/download.html

• [Sun04d] Sun Microsystems; JavaServer Pages Specification, Version 2.0;http://java.sun.com/products/jsp/reference/api/index.html