Softwarearchitektur

Werbung
Integration Engineering - Verteilte
Anwendungen auf der Basis von J2EE
Stefan Malich
Wintersemester 2006/2007
Version 1.6
Lehrstuhl für Wirtschaftsinformatik und
Softwaretechnik
Prof. Dr. Stefan Eicker
1
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
2
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
3
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
4
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 Enterprise
Applications 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!
5
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.
6
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.
7
Einführung und Motivation
Anteile bei Neuentwicklungen
15%
Relative Anteile der
Entwicklungsplattformen bei
transaktionsbasierten
Neuentwicklungen
J2EE und .NET
sonstige
85%
Quelle:Gartner/namics ag
8
Einführung und Motivation
Anteile bei existierenden transaktionsbasierten Anwendungen
25%
Relative Anteile der
Entwicklungsplattformen
existierenden
transaktionsbasierten
Anwendungen
COBOL/CICS
sonstige
75%
Quelle:Ovum
9
Einführung und Motivation
Beispiel: SAP
SAP NetWeaver™
People Integration
Portal
Collaboration
25%
Information Integration
Business
Intelligence
Knowledge
Management
Master Data Management
Process Integration
Integration
Broker
Business Process
Management
Life Cycle Management
Composite Application Framework
Multi-Channel Access
• NetWeaver-Plattform und
interne Entwicklungen
basieren auf J2EE und
ABAP
• J2EE ist die Plattform für
Neuentwicklungen
• .NET wird „unterstützt“
Application Platform
J2EE
ABAP
andOS
OS Abstraction
Abstraction
DBDBand
…
.NET
WebSphere
Quelle: SAP
10
Einführung und Motivation
Beispiel: Siebel
• Aktuelle Versionen unterstützen J2EE und .NET
• Ältere Versionen basierten nur auf .NET
• Web Services ermöglichen Interoperabilität zwischen den
beiden Plattformen
Quelle: Siebel
11
Einführung und Motivation
Rollen in einer Projektorganisation
Projektmanagement
Projektmanager
Anforderungsmanagement
Technische Architektur
Anwendungsentwicklung
Anwendungstest
Analyst
Softwarearchitekt
Designer
Tester
Entwickler
12
Verteilte Softwarearchitekturen
Verantwortlichkeiten und beispielhafte Aufgaben (1/3)
• Analyst
- Analyse und Definition
der fachlichen
Anforderungen
- Erstellung des
Fachkonzepts
• Softwarearchitekt
- Entwurf der
Softwarearchitektur
- Definition der grundlegenden technischen
Entscheidungen
- Definition des projektweiten Rahmens für die
einzelnen Entwurfsentscheidungen
• Analyst
- Erstellung eines HTMLbasierten Prototypen
• Softwarearchitekt
- Identifikation der
Komponenten der
Softwarearchitektur
- In welcher Schicht der
Softwarearchitektur
wird die Validierung der
Benutzereingaben
ausgeführt?
13
Verteilte Softwarearchitekturen
Verantwortlichkeiten und beispielhafte Aufgaben (2/3)
• 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
• Designer
- Entwurf einer
Komponente mit ihren
Schnittstellen im
Kontext der
Softwarearchitektur
• Entwickler
- Test im Kontext der
Softwarearchitektur
- Test in den
verschiedenen
Umgebungen
14
Verteilte Softwarearchitekturen
Verantwortlichkeiten und beispielhafte Aufgaben (3/3)
• 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
• Tester
- Definition und
Koordination der
Testumgebungen
• Projektmanager
- Erstellung des
Arbeitsplans
- Erstellung der
Projektorganisation
- Anforderungsmanagement
15
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
16
Verteilte Objekte und Komponenten
Motivation
• Verbindung des objekt-orientierten Paradigmas mit den
Konzepten verteilter Systeme
• Rechner- und betriebssystemübergreifender Zugriff eines
Objekts auf die Methoden eines anderen Objekts
Rechner 1
Rechner 1
Rechner 2
Objekt A
Objekt B
Objekt A
Objekt B
17
Verteilte Objekte und Komponenten
Object Broker Pattern
Rechner 1
(Client)
Rechner 2
(Server)
Objekt A
Objekt B
Methoden-
Methoden-
Methoden-
Methoden-
aufruf
ergebnis
ergebnis
aufruf
ServerProxy
Request
ClientProxy
Reply
Reply
Object Request
Broker
Request
Object Request
Broker
RPC
18
Verteilte Objekte und Komponenten
Implikationen der Verteilung
• Performance
Rechner 1
(Client)
Rechner 2
(Server)
Objekt A
Objekt B
Methoden-
Methoden-
Methoden-
Methoden-
aufruf
ergebnis
ergebnis
aufruf
ServerProxy
Request
ClientProxy
Reply
Reply
Object Request
Broker
Request
Object Request
Broker
RPC
- 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
19
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
20
Verteilte Softwarearchitekturen
Ziele der Vorlesungseinheit
• Verständnis der Ziele und Eigenschaften einer Softwarearchitektur
• Verständnis und Anwendung des Sichten- und Schichtenkonzepts
• Verständnis und Bewertung der Einflussfaktoren von
Softwarearchitekturen
• Kenntnis und Identifikation der wesentlichen Architekturstile
• Verständnis der Relevanz der Softwarearchitektur innerhalb
des Projektmanagements
21
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
22
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)
23
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: Hardwarearchitektur)
- Vergleiche: Anwendungsarchitektur vs. Datenarchitektur
Quelle: in Anlehnung an [BaCK03]
24
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]
25
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]
26
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]
27
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
28
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)
29
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]
30
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]
31
Verteilte Softwarearchitekturen
Softwarearchitektur: logische Sicht
Komponente 10
Komponente 9
Komponente 8
Komponente 6
Komponente 7
Komponente 5
Komponente 2
Komponente 3
Komponente 1
Komponente 4
Quelle: in Anlehnung an [Balz96]
Komponente X nutzt Komponente Y
32
Verteilte Softwarearchitekturen
Softwarearchitektur: logische Sicht mit Schichten
Schicht 2
Komponente 2.1
Komponente 2.2
Komponente 2.3
Schicht 1
Komponente 1.1
Komponente 1.2
Komponente 1.3
Schicht 0
Komponente 0.1
Komponente 0.2
Komponente 0.3
Komponente 0.4
Quelle: in Anlehnung an [Balz96]
Komponente X nutzt Komponente Y
33
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]
34
Verteilte Softwarearchitekturen
Definition der Softwarearchitektur in der Entwurfsphase
Planungsphase
Analysephase
Entwurfsphase
Softwarearchitektur
Implementierungsphase
Testphase
Einführungsphase
Entwürfe der
Softwareelemente
35
Verteilte Softwarearchitekturen
Beispiel: Vorgehensweise in der Entwurfsphase
Abbildung ist bewusst nicht in den Folien enthalten!
36
Verteilte Softwarearchitekturen
Beispiel: Entwurf einer Softwarearchitektur
Service
View
MQ
Controller
Transfer
Object
Form
Bean
Action
Bean
Model
Softwareelement X nutzt Softwareelement Y
Session
Facade
HTTPS
HTML
Backend
Dispatcher
GUI
Kontrollmodul
Rechenmodul
Datenlesemodul
Entity
Bean
Benutzer/
Rechte
Datenzugriffsmodul
Stamm-/
Bewegungsdaten
37
Verteilte Softwarearchitekturen
Einflussfaktoren auf eine Softwarearchitektur nach Bass et al. (1/2)
Stakeholders
• Kunden, Benutzer, Entwickler,
Projektmanager, Wartungspersonal
Unternehmen
• Kenntnisse und Fähigkeiten
der Entwickler
Softwarearchitektur
• Strategische Ziele (Program
Management)
Kenntisse und
Erfahrungen des
Architekten
• Projekterfahrungen,
Schulungen
technische Umgebung
• Gegebene Entwicklungsplattform (z.B. Mainframe)
Quelle: in Anlehnung an [BaCK03]
38
Verteilte Softwarearchitekturen
Einflussfaktoren auf eine Softwarearchitektur nach Balzert (2/2)
Einsatzbedingungen
• sequenziell
• nicht sequenziell (nebenläufig,
verteilt, Echtzeit, parallel)
Nicht funktionale
Produktanforderungen
• Änderbarkeit, Effizienz,
Zuverlässigkeit
Nicht funktionale
Qualitätsanforderungen
Softwarearchitektur
• Skalierbarkeit, Wiederverwendbarkeit, Reaktionszeit
Umgebungs- und
Randbedingungen
• Gegebene PlattformArchitektur (z.B. Mainframe)
Quelle: in Anlehnung an [Balz96]
39
Verteilte Softwarearchitekturen
Bewertung von Softwarearchitekturen - Problematik
Service
View
MQ
Controller
Transfer
Object
Form
Bean
Action
Bean
Model
Session
Facade
HTTPS
HTML
Backend
Dispatcher
GUI
Kontrollmodul
Rechenmodul
Datenlesemodul
Entity
Bean
Benutzer/
Rechte
Datenzugriffsmodul
gut?
gut?schlecht?
schlecht?
2,2
2,2?? 77von
von10
10??
Stamm-/
Bewegungsdaten
40
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
41
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?
42
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
43
Verteilte Softwarearchitekturen
Host/Mainframe-Softwarearchitektur
Mainframe/Host
Präsentation
Geschäftslogik
• Präsentations-,
Geschäftslogik- und
Datenhaltungsschicht liegen
auf einem Rechnerknoten
• Beachte: Strukturierung in
Schichten ist insbesondere
bei Altsystemen nicht immer
erfolgt
Datenhaltung
44
Verteilte Softwarearchitekturen
Client/Server-Softwarearchitektur
Client
Präsentation
Geschäftslogik
• Präsentations- und
Datenhaltungsschicht auf
unterschiedlichen Rechnerknoten
• Verteilung der
Geschäftslogik kann
variieren
• „Fat Client“
Datenhaltung
Server
45
Verteilte Softwarearchitekturen
Variationen der Client/Server-Softwarearchitektur
Client
Client
Präsentation
Präsentation
Geschäftslogik 1
Geschäftslogik
Geschäftslogik 2
Datenhaltung
Datenhaltung
Server
Server
46
Verteilte Softwarearchitekturen
Mehrschichtige Softwarearchitektur
Client
Applikationsserver
Datenserver
Präsentation
Geschäftslogik
Datenhaltung
• Verteilung der Schichten auf mehreren Rechnerknoten
• „Thin Client“
47
Verteilte Softwarearchitekturen
Variation der mehrschichtigen Softwarearchitektur
Applikationsserver
Geschäftslogik
Client
Datenserver
Präsentation
Datenhaltung
Applikationsserver
Geschäftslogik
48
Verteilte Softwarearchitekturen
Softwarearchitekturen in der Praxis
Client
Applikationsserver
Datenserver
Präsentation
Geschäftslogik
Datenhaltung
• Heterogenität durch Variation der
„grundlegenden“ Softwarearchitekturen
Geschäftslogik
Datenhaltung
Mainframe/Host
49
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
50
Verteilte Softwarearchitekturen
Anforderungen und Probleme
• Reduzierung der
Entwicklungs- und
Betriebskosten
• Schnelle Reaktionsgeschwindigkeit
• Öffnung der
Unternehmen nach
außen
- Kunden, Lieferanten,
Partner
• Ganzheitliche
Geschäftsprozesse
• Kurze Lebenszyklen der
Produkte- bzw.
Dienstleistungen
• Günstige und schnelle
Entwicklung von
Anwendungen
• Vollständige Integration
der unternehmensinternen Anwendungen
• Skalierbarkeit der
Anwendungen
• Differenzierte Definition
von Sicherheitseigenschaften
• Hohe Komplexität
51
Verteilte Softwarearchitekturen
Literaturangaben (1/2)
• [BaCK03] Bass, Len; Clements, Paul; Kazman, Rick;
Software Architecture in Practice; 2. Auflage; AddisionWesley; 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.
52
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.
53
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
54
J2EE-Plattform
Ziele der Vorlesungseinheit
• Verständnis der Elemente und Positionierung der J2EEPlattform
• Verständnis der Beziehung zwischen der J2EE-Spezifikation
und der Umsetzung in Produkten
55
J2EE-Plattform
Java-Plattform
Java Anwendung
Laufzeitumgebung /
Java APIs
Java Virtual Machine
Betriebssystem
• 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)
Quelle: in Anlehnung an http://java.sun.com/
56
J2EE-Plattform
Begriffsdefinition: J2EE
• Definition einer Plattform, welche Kosten und Komplexität von
verteilten, mehrschichtigen Anwendungen reduziert
• Definition einer standardisierten Softwarearchitektur, welche
aus vier Elementen besteht
Java 2 Platform,
Enterprise Edition
Specification
Reference
Implementation
Compatibility
Test Suite
Blue Prints
Quelle: in Anlehnung an [Sun04a]
57
J2EE-Plattform
Positionierung von J2EE
• 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.
Quelle: siehe http://java.sun.com/
58
J2EE-Plattform
Java 2 Platform, Enterprise Edition Specification
• 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
59
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
60
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
61
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/
62
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/
63
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/
64
J2EE-Plattform
BluePrints
• 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
65
J2EE-Plattform
J2EE-Pattern-Katalog
Quelle: http://www.corej2eepatterns.com/
66
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/
67
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
68
J2EE-basierte Softwarearchitektur
Inhalte des Kapitels "J2EE-basierte Softwarearchitektur"
•
•
•
•
Grundlagen der J2EE-basierten Softwarearchitektur
Servlets
JavaServer Pages
Enterprise JavaBeans
69
J2EE-basierte Softwarearchitektur
Ziele der Vorlesungseinheit
• Verständnis der Komponenten einer J2EE-basierten
Anwendung
• Verständnis und Bewertung der standardisierten Softwarearchitektur
• Verständnis und Analyse der J2EE-Anwendungskomponenten und des Container-Konzepts
• Verständnis und Bewertung der Container-Dienste
• Verständnis der Paketierung und Installation von J2EEAnwendungen
• Verständnis der Modulstruktur einer J2EE-Anwendung
70
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)
71
J2EE-basierte Softwarearchitektur
Komponenten einer J2EE-basierten Anwendung
• Anwendungskomponenten
- Komponenten, welche anwendungsspezifische Funktionen
implementieren
• Container
- Laufzeitumgebung für Anwendungskomponenten einer J2EEArchitektur
• 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
72
J2EE-basierte Softwarearchitektur
Standardisierte Softwarearchitektur
Applet Container
Applet
Web
Container
JSP
Servlet
Enterprise JavaBean
Container
EJB
Datenbank
APIs
APIs
APIs
Application Client
Container
Application
Client
APIs
Quelle: in Anlehnung an [Sun04a]
Komponente X nutzt Komponente Y
73
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]
74
J2EE-basierte Softwarearchitektur
Container-Konzept
• Laufzeitumgebung für Anwendungskomponenten einer J2EEArchitektur
• Bereitstellung von APIs, welche von den Anwendungskomponenten 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 J2EEPlattform
Quelle: in Anlehnung an [Sun04a]
75
J2EE-basierte Softwarearchitektur
Eigenschaften eines Containers
EJB 4
EJB 3
EJB 2
EJB
Container
EJB 1
APIs
Beispiel: EJB Container
• J2EE-Spezifikation definiert,
welche APIs von den
Containern angeboten
werden müssen
• Container-Werkzeuge zur
Verwaltung des Containers
und der Anwendungskomponenten
• Interpretation eines
standardisierten
Dateiformats, um die
Anwendungskomponenten
im Container installieren zu
können
76
J2EE-basierte Softwarearchitektur
Vorteile des Container-Konzepts
• Implementation von grundlegenden Klassen und Funktionen
- APIs der J2SE und J2EE
• Implementation und Kapselung von Kommunikationsprotokollen
• 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
77
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
78
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]
79
J2EE-basierte Softwarearchitektur
Dienste der Container - Überblick
JRMP
IIOP
IIOP HTTP(S)
HTTP(S)
Applet Container
Applet
JRMP
SOAP/HTTP
Web
Container
JSP
IIOP HTTP(S)
JRMP
SOAP/HTTP
Enterprise JavaBean
Container
Servlet
EJB
Database
J2SE
J2EE
J2EE
J2SE
J2SE
Application Client
Container
Application
Client
J2EE
J2SE
JRMP
Quelle: in Anlehnung an [Sun04a] und [Sun04b]
SOAP/HTTP
IIOP HTTP(S)
Client
Server
80
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
81
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
82
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])
83
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
84
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/
85
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/packagesummary.html
86
J2EE-basierte Softwarearchitektur
Datenformate (2/2)
• Java Archives (JAR)
- Standardformat zur Paketierung und Installation von Javabasierten 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/
87
J2EE-basierte Softwarearchitektur
Dienste der Container - Überblick
JRMP
IIOP
IIOP HTTP(S)
IIOP HTTP(S)
HTTP(S)
JRMP
Applet Container
Applet
SOAP/HTTP
Web
Container
JSP
JRMP
Enterprise JavaBean
Container
Servlet
EJB
J2EE
API
J2SE
Database
API
API
API
SOAP/HTTP
J2EE
API
J2SE
J2SE
Application Client
Container
Application
Client
API
J2EE
API
J2SE
JRMP
SOAP/HTTP
IIOP HTTP(S)
Quelle: in Anlehnung an [Sun04a] und [Sun04b]
88
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)
89
J2EE-basierte Softwarearchitektur
APIs der J2EE (1/5)
API
Beschreibung der Dienste/Schnittstellen
Servlet 2.4
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
JavaServer Pages
(JSP) Specification
2.0
Einbettung von Java-Code und vordefinierten
Befehlen in statische HTML-Seiten; JSPs werden
mit einem JSP-Compiler in Servlets übersetzt
Enterprise
JavaBeans (EJB)
Specification 2.1
Server-seitige, verteilte Komponentenarchitektur
Java Messaging
Service (JMS)
Specification 1.1
Programmierschnittstelle zwischen einem
Container und einer Nachrichten-basierten
Middleware
90
J2EE-basierte Softwarearchitektur
APIs der J2EE (2/5)
API
Beschreibung der Dienste/Schnittstellen
Java Transaction
API (JTA) 1.0
Programmierschnittstelle zwischen den beteiligten
Parteien einer verteilten Transaktion
(Anwendungen, Ressourcen Manager und
Application Server)
JavaMail 1.3
Ermöglicht E-Mail-Nachrichten zu erstellen, zu
versenden und zu empfangen (MIME, E-Mail
Message Stores)
JavaBeans
Activation
Framework (JAF)
1.0
Unterstützung der Konvertierung von MIMEDatentypen in Java-Objekte
91
J2EE-basierte Softwarearchitektur
APIs der J2EE (3/5)
API
Beschreibung der Dienste/Schnittstellen
Java API for XML
Processing (JAXP)
1.2
Erstellung und Bearbeitung von XMLDokumenten auf der Basis der
Programmiermodelle SAX und DOM; Schnittstellen zu einer XSLT-Transformationsengine
J2EE Connector
Architecture 1.5
Programmierschnittstelle zu Resource Adaptern,
welche die Ausführung von Transaktionen
unterstützen
Web Services for
J2EE 1.1
Beschreibung der Implementierung und
Veröffentlichung eines Web Service Endpoints
Java API for XMLbased RPC (JAXRPC) 1.1
RPC auf der Basis von SOAP
92
J2EE-basierte Softwarearchitektur
APIs der J2EE (4/5)
API
Beschreibung der Dienste/Schnittstellen
SOAP with
Erstellung und Bearbeitung von SOAP-basierten
Attachments API for Nachrichten
Java (SAAJ) 1.2
Java API for XML
Registries (JAXR)
1.0
Programmierstelle für den Zugriff auf einen
Verzeichnisdienst für Web Services entsprechend
der Spezifikationen ebXML Registry und/oder
UDDI
J2EE Management
1.0
Steuerung und Überwachung von Komponenten
der J2EE-Plattform (J2EE Management Model)
Java Management
Extensions (JMX)
1.2
Einbindung von Komponenten der J2EEArchitektur in das J2EE Management Model
93
J2EE-basierte Softwarearchitektur
APIs der J2EE (5/5)
API
Beschreibung der Dienste/Schnittstellen
J2EE Deployment
1.1
Schnittstelle zwischen einem Deployment Tool
und einem J2EE-Server
Java Authorisation
Service Provider
Contract for
Containers (JACC)
1.0
Definition von neuen java.security.Permission
Klassen zur Implementation des
Autorisierungsmodells der J2EE-Plattform
94
J2EE-basierte Softwarearchitektur
API-Anforderungen an die Container (1/4)
API
Application Client
Applet
Web
EJB
Container Container
EJB 2.1
Ja
Nein
Ja
Ja
Servlet 2.4
Nein
Nein
Ja
Nein
JSP 2.0
Nein
Nein
Ja
Nein
JMS 1.1
Ja
Nein
Ja
Ja
JTA 1.0
Nein
Nein
Ja
Ja
Quelle: in Anlehnung an [Sun04a]
95
J2EE-basierte Softwarearchitektur
API-Anforderungen an die Container (2/4)
API
Application Client
Applet
Web
EJB
Container Container
JavaMail 1.3
Ja
Nein
Ja
Ja
JAF 1.0
Ja
Nein
Ja
Ja
JAXP 1.2
Ja
Nein
Ja
Ja
Connector
Architecture 1.5
Nein
Nein
Ja
Ja
Web Services for
J2EE 1.1
Ja
Nein
Ja
Ja
Quelle: in Anlehnung an [Sun04a]
96
J2EE-basierte Softwarearchitektur
API-Anforderungen an die Container (3/4)
API
Application Client
Applet
Web
EJB
Container Container
JAX-RPC 1.1
Ja
Nein
Ja
Ja
SAAJ 1.2
Ja
Nein
Ja
Ja
JAXR 1.0
Ja
Nein
Ja
Ja
Management 1.0
Ja
Nein
Ja
Ja
JMX 1.2
Ja
Nein
Ja
Ja
Quelle: in Anlehnung an [Sun04a]
97
J2EE-basierte Softwarearchitektur
API-Anforderungen an die Container (4/4)
API
Application Client
Applet
Web
EJB
Container Container
Deployment 1.1
Nein
Nein
Nein
Nein
JACC 1.0
Nein
Nein
Ja
Ja
Quelle: in Anlehnung an [Sun04a]
98
J2EE-basierte Softwarearchitektur
Rollen in der Anwendungsentwicklung
• Große Anzahl und
großer Umfang der APIs
• Hohe Anforderungen an
Anwendungsentwickler
• Dedizierte Rollen in der
Anwendungsentwicklung, z.B.
-
Web Designer
Web Entwickler
EJB Entwickler
Datenbank Entwickler
• Querschnittsrollen, z.B.
- Technischer Architekt
- Anwendungsarchitekt
99
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]
100
J2EE-basierte Softwarearchitektur
Paketierung und Installation
Servlets
JSPs
Statische
Dokumente
Applets,
Klassen,
Beans
Hilfsklassen
Deployment
Descriptor
Web Archive (WAR)
Web
Container
WAR-Datei
J2EE
J2SE
• Paketierung der einzelnen
Web-Komponenten zur
Installation in einem WebContainer
• Datenformat: Web ARchive
Format (WAR)
• Vorteile:
- Installation eines WAR vs.
Installation einzelner WebKomponenten
- Konsistenz und Integrität
- Paketierung und
Versionierung
101
J2EE-basierte Softwarearchitektur
Module einer J2EE-Anwendung
J2EE Anwendung
.EAR Datei
1
N
1
1
Web DD
N
Servlet
1
N
EJB Modul
.JAR Datei
1
1
1 Application
DD
1
N
Web Modul
.WAR Datei
1
1
1
N
Client Modul
.JAR Datei
1
1
1
Resource Adapter
Modul
.JAR Datei
1
1
1
N
JSP
N
HTML,
GIF, usw.
1
EJB DD
N
EJB
1
Client DD
N
Client
Class
1
Resouce
DD
N
Resource
Class
102
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
103
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
104
Servlets
Positionierung in der Softwarearchitektur
Applet Container
Applet
Web
Container
JSP
Servlet
Enterprise JavaBean
Container
EJB
Datenbank
APIs
APIs
APIs
Application Client
Container
Application
Client
APIs
Quelle: in Anlehnung an [Sun04a]
Komponente X nutzt Komponente Y
105
Servlets
Begriffsdefinition: Servlet
Server
Client
Web
Browser
Request
Response
Servlet
HTTP
Web
Container
Request
Response
Servlet
• Java-basierte Klasse,
welche die Funktionalität
eines Web Servers
erweitert
• Erweiterung: Bereitstellung
von dynamischen Inhalten
auf der Basis eines
Request-and-ResponseProgrammiermodells
• Unabhängig vom
Kommunikationsprotokoll
• Abgeleitete Klassen zur
Unterstützung des HTTP
106
Servlets
Begriffsdefinition: Servlet Engine / Servlet Container
HTTP
Web
Browser
Web
Container
Request
Servlet
Response
J2EE
J2SE
• 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 HTTPNachrichten durch JavaObjekte für Servlets
107
Servlets
HTTP
Web
Browser
Request
Response
HTTP Server
Verteilungsaspekte von Web Servern
• Der HTTP-Server kann im
Prozess des Web
Containers laufen oder als
eigenständiger Prozess
ausgeführt werden
Web
Container
Servlet
J2EE
J2SE
Web
Container
Web
Browser
Request
Response
HTTP Server
HTTP
API
Servlet
J2EE
- Prozess vs. Thread
- Bereitstellung von
statischen vs. dynamischen
Inhalten
• Eigenständiger HTTPServer wird über ein API
integriert
J2SE
108
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()
109
Servlets
Steuerung und Verwaltung der Servlets
Web
Browser
HTTP
Web
Container
Request
Servlet
Response
javax.servlet.Servlet
J2EE
J2SE
• 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
110
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)
111
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
112
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 Requestund Response-Objekten
113
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
114
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
115
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!
116
Servlets
Beispiel: Überschreiben der doGet-Methode
public 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 Stream
PrintWriter out = resp.getWriter();
// Schreibe die HTML-Tags in den Character Stream
out.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 Seite
out.println("<P>Das ist die Ausgabe eines Servlets!</P>");
out.println("<BODY>");
// Schließe den Character Streams
out.close();
}
117
Servlets
Sequenz eines Servlet-Aufrufs
1
Web 2
Browser
Web
Container
Request
Response
7
Request
3
4
5
Response
6
9
Servlet
8
J2EE
J2SE
1
Benutzer: Eingabe der URL
2
Web Browser: HTTP Request wird an Web Server/Web Container gesendet
3
Web Container: Überprüfung der URL und Mapping auf das Servlet
4
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 Servlets
7
Servlet: Aufruf entsprechenden do-Methode
8
Servlet: Schreiben der HTML-Tags in ein Buffer des Reponse-Objekts
9
Web Container: HTTP Response wird auf der Basis des Response-Objektes erstellt und versendet
118
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);
119
Servlets
Dispatching Requests (2/2)
1
Request
Web 2
Browser
Response
Web
Container
Request
3
Response
4
Servlet B
7
5
6
9
Servlet A
?
8
Servlet C
J2EE
J2SE
120
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()
121
Servlets
Filtering (2/2)
Web
Container
Request
1
Response
Request
3
Response
4
Filter
Web
Browser
Filter
2
7
5
6
9
Servlet
8
J2EE
J2SE
Filter Chain
Filter A
Filter B
Filter C
122
Servlets
Sessions
HTTP
Request A
Web
Browser
Response A
Web
Container
Servlet
Request B
Response B
J2EE
J2SE
• HTTP ist ein zustandloses
Protokoll
• 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
123
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 HTTPRequests
124
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
125
Servlets
Beispiel: Zugriff auf eine Session in der doGet-Methode
public 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>");
}
}
126
Servlets
Beispiel: Zugriff auf Attribute in einer Session
public 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 wieder
session.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>");
}
127
}
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
128
JavaServer Pages
Ziele der Vorlesungseinheit
• Verständnis des JavaServer Page-Konzepts
• Verständnis der Elemente einer JavaServer Page
129
JavaServer Pages
Positionierung in der Softwarearchitektur
Applet Container
Applet
Web
Container
JSP
Servlet
Enterprise JavaBean
Container
EJB
Datenbank
APIs
APIs
APIs
Application Client
Container
Application
Client
APIs
Quelle: in Anlehnung an [Sun04a]
Komponente X nutzt Komponente Y
130
JavaServer Pages
Begriffsdefinition: JavaServer Page (JSP)
HTTP
Web
Browser
Request
Web
Container
JSP
Response
J2EE
J2SE
• 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
131
JavaServer Pages
JavaServer Pages vs. Servlets
HTTP
Web
Browser
Web
Container
JSP
Request
Response
Servlet
J2EE
J2SE
• 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.
132
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>
133
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
134
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
135
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
136
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
137
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
138
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
139
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>
140
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” />
141
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>
142
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>
143
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
144
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 EJBTypen
145
Enterprise JavaBeans
Positionierung in der Softwarearchitektur
Applet Container
Applet
Web
Container
JSP
Servlet
Enterprise JavaBean
Container
EJB
Datenbank
APIs
APIs
APIs
Application Client
Container
Application
Client
APIs
Quelle: in Anlehnung an [Sun04a]
Komponente X nutzt Komponente Y
146
Enterprise JavaBeans
Begriffsdefinition: Enterprise JavaBean
Enterprise JavaBean
Container
Client
Methodenaufruf
EJB
Methodenergebnis
J2EE
J2SE
• 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
147
Enterprise JavaBeans
Begriffsdefinition: Enterprise JavaBean Container
• Laufzeitumgebung für EJBs
• Steuerung und Verwaltung
der EJBs
Enterprise JavaBean
Container
Client
Methodenaufruf
Methodenergebnis
EJB
J2EE
J2SE
- dynamisches Laden und
Instanziieren von EJBs
- Management des
Lebenszyklus von EJBs
• Bereitstellung von Diensten
wie z.B.
- Kapselung der
Kommunikation mit Clients
- Transaktionen
- Persistenz
148
Enterprise JavaBeans
Eigenschaften der Enterprise JavaBeans
Client
Client View
Enterprise JavaBean
Container
EJB
Component Contract
J2EE
J2SE
• 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
149
Enterprise JavaBeans
Clients der EJBs
JRMP
IIOP
IIOP HTTP(S)
HTTP(S)
Applet Container
Applet
JRMP
SOAP/HTTP
Web
Container
JSP
IIOP HTTP(S)
JRMP
SOAP/HTTP
Enterprise JavaBean
Container
Servlet
EJB
EJB
Database
J2SE
J2EE
J2EE
J2SE
J2SE
Application Client
Container
Application
Client
J2EE
J2SE
JRMP
Quelle: in Anlehnung an [Sun04a] und [Sun04b]
SOAP/HTTP
IIOP HTTP(S)
Client
Server
150
Enterprise JavaBeans
Verteilung der Clients
Applet Container
Applet
Web
Container
JSP
Enterprise JavaBean
Container
Servlet
EJB
EJB
J2EE
J2EE
J2SE
J2SE
J2SE
JVM
JVM
JVM
Database
Application Client
Container
Application
Client
J2EE
J2SE
JVM
Quelle: in Anlehnung an [Sun04a] und [Sun04b]
Client
Server
151
Enterprise JavaBeans
J2EE Server mit Web und EJB Container
Applet Container
Applet
Web
Container
JSP
Enterprise JavaBean
Container
Servlet
EJB
EJB
Database
J2SE
J2EE Server
JVM
J2EE
J2SE
Application Client
Container
JVM
Application
Client
J2EE
J2SE
JVM
Client
Server
152
Enterprise JavaBeans
Local vs. Remote Clients
Kriterium
Local Client
Remote Client
Ortstransparenz
Nein
ja
Ort der EJB
in der identischen JVM
in einer anderen JVM
(auf dem identischen
oder einem anderen
Rechner)
Typ der Schnittstelle Java Interface
Java Remote Interface
Methodenparameter Pass by Reference
und -ergebnis
Pass by Value
153
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]
154
Enterprise JavaBeans
Granularität der EJBs
Enterprise JavaBean
Container
Client
3
Methodenaufruf
2
EJB 2
EJB 3
1
EJB 1
Methodenergebnis
4
EJB 4
Database
J2EE
J2SE
1
Remote Interface
2
3
4
Local Interface
Session
Facade
Pattern
vgl. [AlCM03]
155
Enterprise JavaBeans
Schnittstellen zwischen Client und Container
• Local und Remote Client
View umfassen
Client
Cient View
Enterprise JavaBean
Container
EJB
- Home Interface
- Component Interface
• Remote Client View enthält
zusätzlich
- Metadata Interface
Component Contract
J2EE
J2SE
156
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 EJBInstanz 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
157
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
158
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
159
Enterprise JavaBeans
Object Broker Pattern (Wiederholung)
Rechner 1
(Client)
Rechner 2
(Server)
Objekt A
Objekt B
Methoden-
Methoden-
Methoden-
Methoden-
aufruf
ergebnis
ergebnis
aufruf
ServerProxy
Request
ClientProxy
Reply
Reply
Object Request
Broker
Request
Object Request
Broker
RPC
160
Enterprise JavaBeans
Nutzung einer entfernten EJB (1/2)
Enterprise JavaBean
Container
JNDI
1
lookup( <JNDI-Name> )
Client
2
Client
Object
3
EJBHome
create()
Object Proxy
4 businessMethod()
RMI
EJBHome
Object
implements
Home Interface
implements
Home Interface
EJBObject
Proxy
EJBObject
implements
Component Interface
RMI
implements
Component Interface
create()
Bean
Object
implements javax.ejb.
<Typ der Bean>
5
businessMethod()
J2EE
J2EE
J2SE
J2SE
JVM
JVM
161
Enterprise JavaBeans
Nutzung einer entfernten EJB (2/2)
// Initialisierung des Kontextes für die
// folgende JNDI-Operation
Context initialContext = new
InitialContext();
// Ermittlung des Objektes
Object object = initialContext.lookup(
"ejb/com/softec/vtbdv1/CustomerFacadeHome");
// Type Cast des Objektes auf Remote Home
// Interface
CustomerFacadeHome facadeHome =
(CustomerFacadeHome)javax.rmi.PortableRemoteO
bject.narrow( object,
CustomerFacadeHome.class );
// Erstellung der EJB-Instanz
CustomerFacade facade = facadeHome.create();
• Ermittlung des Objektes,
welches das Remote Home
Interface implementiert
- JNDI wird als
Objektspeicher verwendet
- Type Cast erfolgt über
statische Methode
narrow(), um CORBAKompatibilität zu erhalten
• Erstellung und Nutzung der
EJB-Instanz
// Aufruf der Methode (Geschäftslogik)
int i = facade.getNumOfOpenOrders( customerID
);
162
Enterprise JavaBeans
Nutzung einer lokalen EJB (1/2)
Enterprise JavaBean
Container
JDNI
1 lookup( <JNDI-Name> )
2
Client
Object
create()
3
EJBLocal
Home Object
implements
Home Interface
EJBLocal
Object
4 businessMethod()
create()
implements
Component Interface
Bean
Object
implements javax.ejb.
<Typ der Bean>
5
businessMethod()
J2EE
J2SE
JVM
163
Enterprise JavaBeans
Nutzung einer lokalen EJB (2/2)
// Initialisierung des Kontextes für die
// folgende JNDI-Operation
Context initialContext = new
InitialContext();
• Ermittlung des Objektes,
welches das Local Home
Interface des Objektes
Cast
implementiert
// Ermittlung des Objektes und Java Type
OrderListLocalHome orderListLocalHome =
(OrderListLocalHome)initialContext.lookup(
"local:ejb/com/softec/vtbdv1/
OrderListLocalHome");
// Erstellung der EJB-Instanz
OrderListLocal orderList =
orderListLocalHome.create();
// Aufruf der Methode (Geschäftslogik)
int i = orderList.getNumOfOrders( customerID
, OPEN_ORDERS );
- JNDI wird als
Objektspeicher verwendet
- Type Cast auf der Basis
des standard JavaMechanismus
• Erstellung und Nutzung der
EJB-Instanz
164
Enterprise JavaBeans
Erstellung vs. Generierung von Klassen und Interfaces
Client
Home
Interface
Enterprise JavaBean
Container
extents javax.ejb.
EJBHome
implements
Client
Class
implements
EJBHome
Proxy Class
EJBHome
Class
javax.ejb.
<Typ der
Bean>
implements
Component
Interface
Bean
Class
extents javax.ejb.
EJBObject
implements
EJBObject
Proxy Class
implements
EJBObject
Class
Erstellung durch Entwickler
Generierung durch Werkzeug
Teil des J2EE APIs
165
Enterprise JavaBeans
Schnittstellen zwischen EJB und Container
Client
Cient View
Enterprise JavaBean
Container
EJB
Component Contract
J2EE
J2SE
• 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 EJB
abhängig sind
• Implementation der
Schnittstellen erfolgt durch
die sog. Bean Class
166
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
167
Enterprise JavaBeans
Eigenschaften von Session Beans
Client
Cient View
Enterprise JavaBean
Container
EJB
javax.ejb.SessionBean
J2EE
J2SE
• Implementation von
Funktionen, die von einem
Client aufgerufen werden
• Funktionen können im
Kontext einer Transaktion
ausgeführt werden
- EJB Container verwaltet
und steuert die
Transaktionen (Dienst)
• Zwei Subtypen von Session
Beans
- stateless
- stateful
168
Enterprise JavaBeans
Lebenszyklus von Stateless Session Beans
• Verwaltung des
Lebenszyklus erfolgt durch
den Container
1. Class.newInstance()
2. setSessionContext()
3. ejbCreate()
does not exist
method ready
ejbRemove()
- Container ruft die CallbackMethoden der Schnittstelle
javax.ejb.SessionBean auf
• Keine Zuweisung zu einem
bestimmten Client
- Wiederverwendung von
Instanzen ist möglich
• Keine Speicherung von
Zustandsinformationen
Quelle: in Anlehnung an [Sun04b]
- Effizienter
Speicherverbrauch
169
Enterprise JavaBeans
Lebenszyklus von Stateful Session Beans
• Verwaltung des
Lebenszyklus erfolgt durch
Client und Container
1. Class.newInstance()
2. setSessionContext()
3. ejbCreate<Method>()
method ready
ejbActivate()
ejbRemove()
ejbPassivate()
does not exist
passive
- Container ruft die CallbackMethoden 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
Quelle: in Anlehnung an [Sun04b]
170
Enterprise JavaBeans
Eigenschaften von Entity Beans
• Objekt-orientierte Sicht auf
Datenstrukturen in einer
Datenbank
Enterprise JavaBean
Container
Database
Management
System (DBMS)
EJB
javax.ejb.EntityBean
J2EE
J2SE
Database
- 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
171
Enterprise JavaBeans
Lebenszyklus von Entity Beans
• Verwaltung des
Lebenszyklus erfolgt durch
Container
does not exist
1. Class.newInstance()
2. setSessionContext()
Object.finalize()
ejbActivate()
ejbPassivate()
• Zustand „pooled“
pooled
ejbCreate
<Method>()
ejbRemove()
ready
ejbLoad()
Quelle: in Anlehnung an [Sun04b]
- Container ruft die CallbackMethoden der Schnittstelle
javax.ejb.EntityBean auf
- keine aktuelle Assoziation
mit einem Datensatz in der
Datenbank
- es wurden keine Daten
geladen („leere Instanz“)
ejbStore()
172
Enterprise JavaBeans
Finder Methods (1/2)
Enterprise JavaBean
Container
JNDI
1
lookup( <JNDI-Name> )
Client
findByPrimary(<Primary Key Class>)
findByPrimary(<Primary Key Class>)
2
Client
Object
3
EJBHome
create()
Object Proxy
4 businessMethod()
RMI
EJBHome
Object
implements
Home Interface
implements
Home Interface
EJBObject
Proxy
EJBObject
implements
Component Interface
RMI
implements
Component Interface
create()
Bean
Object
implements javax.ejb.
<Typ der Bean>
5
businessMethod()
J2EE
J2EE
J2SE
J2SE
JVM
JVM
173
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> )
174
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
175
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)
176
Enterprise JavaBeans
Eigenschaften von Message-Driven Beans
Enterprise JavaBean
Container
Client
Messaging
Provider
EJB
javax.ejb.
MessageDrivenBean
J2EE
J2SE
• 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
177
Enterprise JavaBeans
Transaktionen
Enterprise JavaBean
Container
Client
Methodenaufruf
4
1
EJB 2
3
EJB 3
2
EJB 1
7
5
Methodenergebnis
EJB 4
EJB 5
6
Database
J2EE
J2SE
Zeit
1
Container: beginTransaction()
2
EJB 1: executeOrder()
3
EJB 2: calculateInvoice()
4
EJB 3: createInvoice()
5
EJB 4: calculateActualStock()
6
EJB 5: updateStock()
7
EJB Container: EndTransaction()
178
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 ContainerManaged 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
179
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
180
Aspekte der Verteilung von J2EE-Anwendungen
Ziele der Vorlesungseinheit
• Verständnis der Konfigurationskriterien einer mehrschichtigen, verteilten Anwendung
• Verständnis der grundlegenden Elemente und Konzepte von
Konfigurationstopologien
• Verständnis und Bewertung der vorgestellen Konfigurationen
181
Aspekte der Verteilung von J2EE-Anwendungen
Einflussfaktoren auf eine Softwarearchitektur nach Balzert
Einsatzbedingungen
• sequenziell
• nicht sequenziell (nebenläufig,
verteilt, Echtzeit, parallel)
Nicht funktionale
Produktanforderungen
• Änderbarkeit, Effizienz,
Zuverlässigkeit
Nicht funktionale
Qualitätsanforderungen
Softwarearchitektur
• Skalierbarkeit, Wiederverwendbarkeit, Reaktionszeit
Umgebungs- und
Randbedingungen
• Gegebene PlattformArchitektur (z.B. Mainframe)
Quelle: in Anlehnung an [Balz96]
182
Aspekte der Verteilung von J2EE-Anwendungen
Verteilung des Web und EJB Containers
Applet Container
Applet
Web
Container
JSP
Servlet
Enterprise JavaBean
Container
EJB
Datenbank
APIs
APIs
APIs
Application Client
Container
Application
Client
APIs
Quelle: in Anlehnung an [Sun04a]
183
Aspekte der Verteilung von J2EE-Anwendungen
Konfiguration der J2EE Server und Container
Applet Container
Applet
Web
Container
JSP
Enterprise JavaBean
Container
Servlet
EJB
Database
J2SE
JVM
Application Client
Container
J2EE Server
J2EE
J2SE
JVM
Application
Client
J2EE
J2SE
JVM
184
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]
185
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]
186
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 Failure
vermieden werden
• Wartbarkeit
- Aktualisierung von Hard- und Softwareelementen
•
Ist abhängig von der Verfügbarkeit
Quelle: vgl. [ABBC04] und [SCHI04]
187
Aspekte der Verteilung von J2EE-Anwendungen
Konfiguration am Beispiel des WebSphere Application Server
J2EE
Java 2 Platform,
Enterprise Edition
Specification
Reference
Implementation
Compatibility
Test Suite
Blue Prints
• Anbieter eines J2EEkompatiblen 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!
188
Aspekte der Verteilung von J2EE-Anwendungen
Begriffsdefinitionen: Server und Node
• Server
- J2EE-kompatibler Server
•
Node
Web
Container
Enterprise
JavaBean
Container
J2EE Server
JVM
Konfigurationsdaten
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 Konfigurationsdaten
Quelle: in Anlehnung an [SCHI04]
189
Aspekte der Verteilung von J2EE-Anwendungen
Begriffsdefinitionen: Cell und Cluster
Cluster
• Cluster
Cell
- logische Gruppierung von
Cells zur Lastverteilung
- kann eine oder mehrere
Cells umfassen
Node
Web
Container
Enterprise
JavaBean
Container
• Cell
J2EE Server
JVM
Konfigurationsdaten
Node
Web
Container
Enterprise
JavaBean
Container
J2EE Server
JVM
- logische Gruppierung von
mehreren Nodes zu einer
administrativen Einheit
- unterschiedliche Cells
können unterschiedliche
Versionen des J2EE
Servers und der
Anwendung enthalten
Quelle: in Anlehnung an [SCHI04]
190
Aspekte der Verteilung von J2EE-Anwendungen
Verteilung der Last
Web
Container
HTTP(S)
J2EE
J2SE
Plug-In
HTTP Server
HTTP(S)
Web
Browser
Servlet
?
Cluster
Web
Container
Servlet
J2EE
J2SE
• Auch: Load Balancing oder
Workload Management
• Basiert auf Konfiguration
eines Clusters
• Beispiel: Routing des HTTPRequests
- 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
Quelle: in Anlehnung an [SCHI04]
191
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Vertikale Skalierung mit Cluster (1/2)
Application Server
Node
Web und EJB
Container
Web Server
Redirector Node
HTTP
Server
Plug-in
Domain Firewall
Protocol Firewall
Internet
(J2EE Server)
Web und EJB
Container
(J2EE Server)
Database Server
Cluster
Database
Web und EJB
Container
(J2EE Server)
Web und EJB
Container
(J2EE Server)
Quelle: in Anlehnung an [SCHI04]
192
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
193
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Horizontale Skalierung mit Cluster (1/2)
Application Server
Node
Web und EJB
Container
Web Server
Redirector Node
HTTP
Server
Plug-in
Domain Firewall
Protocol Firewall
Internet
(J2EE Server)
Web und EJB
Container
(J2EE Server)
Database Server
Cluster
Application Server
Node
Database
Web und EJB
Container
(J2EE Server)
Web und EJB
Container
(J2EE Server)
Quelle: in Anlehnung an [SCHI04]
194
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
195
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Horizontale Skalierung mit IP Sprayer (1/2)
Presentation Server
Node
HTTP
Server
Plug-in
Web
Container
(J2EE Server)
Load
Balancer
Node
IP
Sprayer
Load
Balancer
Backup
IP
Sprayer
Domain Firewall
Protocol Firewall
Internet
Presentation Server
Node
HTTP
Server
Plug-in
Application Server
Node
EJB
Container
(J2EE Server)
Web
Container
Database Server
(J2EE Server)
Cluster
Database
Presentation Server
Node
HTTP
Server
Plug-in
Web
Container
(J2EE Server)
Presentation Server
Node
HTTP
Server
Plug-in
Web
Container
(J2EE Server)
Application Server
Node
EJB
Container
(J2EE Server)
Quelle: in Anlehnung an [SCHI04]
196
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
197
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
198
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Mehrfache Zellen (1/2)
Cluster
Cell 1
Load
Balancer
Node
IP
Sprayer
Load
Balancer
Backup
IP
Sprayer
Domain Firewall
Protocol Firewall
Internet
Web Application Server
Node
HTTP
Server
Plug-in
Web
Container
EJB
Container
Database Server
Database
Cell 2
Web Application Server
Node
HTTP
Server
Plug-in
Web
Container
EJB
Container
Quelle: in Anlehnung an [SCHI04]
199
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
200
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
201
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
202
Zusammenfassung und Ausblick
Rollen in einer Projektorganisation
Projektmanagement
Projektmanager
Anforderungsmanagement
Technische Architektur
Anwendungsentwicklung
Anwendungstest
Analyst
Softwarearchitekt
Designer
Tester
Entwickler
203
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
204
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; Version
2003.06.13;
http://www.ibm.com/developerworks/rational/
products/rup/
205
Literaturverzeichnis
Verwendete Literatur und Quellen (3/4)
• [SCHI04]
• [Sun04a]
• [Sun04b]
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
Sun Microsystems; Java 2 Platform, Enterprise
Edition (J2EE) Specification, v1.4;
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
206
Literaturverzeichnis
Verwendete Literatur und Quellen (4/4)
• [Sun04c]
• [Sun04d]
Sun Microsystems; Java Servlet Specification,
Version 2.4;
http://java.sun.com/products/servlet/
download.html
Sun Microsystems; JavaServer Pages
Specification, Version 2.0;
http://java.sun.com/products/jsp/reference/api/
index.html
207
Herunterladen