207
1 Lehrstuhl für Wirtschaftsinformatik und Softwaretechnik Prof. Dr. Stefan Eicker Stefan Malich Wintersemester 2006/2007 Version 1.6 Integration Engineering - Verteilte Anwendungen auf der Basis von J2EE

IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 2: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

2

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

Page 3: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

3

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

Page 4: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 5: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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!

Page 6: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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.

Page 7: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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.

Page 8: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

8

Einführung und Motivation

Anteile bei Neuentwicklungen

J2EE und .NETsonstige

Relative Anteile der Entwicklungsplattformen bei

transaktionsbasierten Neuentwicklungen

15%

85%

Quelle:Gartner/namics ag

Page 9: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

9

Einführung und Motivation

Anteile bei existierenden transaktionsbasierten Anwendungen

COBOL/CICSsonstige

25%

75%

Relative Anteile der Entwicklungsplattformen

existierenden transaktionsbasierten

Anwendungen

Quelle:Ovum

Page 10: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 11: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 12: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

12

Einführung und Motivation

Rollen in einer Projektorganisation

Projektmanagement

Anwendungs-entwicklung AnwendungstestAnforderungs-

management Technische Architektur

TesterDesignerAnalyst Softwarearchitekt

Entwickler

Projektmanager

Page 13: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 14: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 15: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 16: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

16

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

Page 17: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 18: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 19: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 20: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

20

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

Page 21: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 22: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 23: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 24: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 25: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 26: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 27: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 28: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 29: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 30: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 31: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 32: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 33: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 34: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 35: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 36: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

36

Verteilte Softwarearchitekturen

Beispiel: Vorgehensweise in der Entwurfsphase

Abbildung ist bewusst nicht in den Folien enthalten!

Page 37: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 38: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 39: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 40: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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 ?

Page 41: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 42: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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?

Page 43: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 44: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 45: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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“

Page 46: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 47: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

47

Verteilte Softwarearchitekturen

Mehrschichtige Softwarearchitektur

Client

Präsentation

Applikationsserver

Geschäftslogik

Datenserver

Datenhaltung

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

Page 48: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

48

Verteilte Softwarearchitekturen

Variation der mehrschichtigen Softwarearchitektur

Client

PräsentationApplikationsserver

Geschäftslogik

Datenserver

Datenhaltung

Applikationsserver

Geschäftslogik

Page 49: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 50: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 51: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 52: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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.

Page 53: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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.

Page 54: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

54

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

Page 55: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 56: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 57: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 58: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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/

Page 59: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 60: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 61: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 62: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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/

Page 63: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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/

Page 64: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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/

Page 65: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 66: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

66

J2EE-Plattform

J2EE-Pattern-Katalog

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

Page 67: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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/

Page 68: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

68

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

Page 69: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

69

J2EE-basierte Softwarearchitektur

Inhalte des Kapitels "J2EE-basierte Softwarearchitektur"

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

Page 70: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 71: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 72: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 73: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 74: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 75: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 76: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 77: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 78: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 79: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 80: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 81: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 82: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 83: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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])

Page 84: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 85: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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/

Page 86: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 87: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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/

Page 88: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 89: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 90: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 91: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 92: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 93: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 94: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 95: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 96: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 97: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 98: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 99: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 100: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 101: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 102: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 103: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 104: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 105: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 106: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 107: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 108: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 109: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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()

Page 110: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 111: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 112: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 113: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 114: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 115: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 116: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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!

Page 117: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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();

}

Page 118: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 119: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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);

Page 120: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

?

Page 121: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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()

Page 122: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 123: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 124: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 125: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 126: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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>");

}

}

Page 127: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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>");

}}

Page 128: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 129: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

129

JavaServer Pages

Ziele der Vorlesungseinheit

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

Page 130: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 131: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 132: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 133: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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>

Page 134: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 135: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 136: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 137: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 138: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 139: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 140: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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>

Page 141: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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” />

Page 142: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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>

Page 143: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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>

Page 144: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 145: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 146: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 147: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 148: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 149: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 150: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 151: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 152: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 153: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 154: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 155: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 156: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 157: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 158: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 159: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 160: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 161: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 162: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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 );

Page 163: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 164: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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 );

Page 165: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 166: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 167: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 168: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 169: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 170: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 171: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 172: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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()

Page 173: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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>)

Page 174: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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> )

Page 175: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 176: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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)

Page 177: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 178: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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()

Page 179: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 180: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

180

Agenda

Einführung und Motivation

Verteilte Objekte und Komponenten

Verteilte Softwarearchitekturen

J2EE-Plattform

J2EE-basierte Softwarearchitektur

Aspekte der Verteilung von J2EE-Anwendungen

Page 181: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 182: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 183: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 184: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 185: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 186: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 187: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 188: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 189: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 190: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 191: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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]

Page 192: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 193: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 194: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 195: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 196: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 197: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 198: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 199: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 200: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 201: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 202: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 203: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

203

Zusammenfassung und Ausblick

Rollen in einer Projektorganisation

Projektmanagement

Anwendungs-entwicklung AnwendungstestAnforderungs-

management Technische Architektur

TesterDesignerAnalyst Softwarearchitekt

Entwickler

Projektmanager

Page 204: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 205: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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/

Page 206: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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

Page 207: IE Verteilte Anwendungen auf der Basis von J2EE v02 · 2019-02-05 · - Beispiele: J2EE, .NET, COBOL, usw. 7 Einführung und Motivation Relevanz der Vorlesungsinhalte Die Plattformen

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