1
Lehrstuhl für Wirtschaftsinformatik undSoftwaretechnikProf. Dr. Stefan Eicker
Stefan Malich
Wintersemester 2006/2007
Version 1.6
Integration Engineering - Verteilte Anwendungen auf der Basis von J2EE
2
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
3
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
4
Einführung und Motivation
Literaturempfehlungen (1/2)
• Armstrong, Eric et al. - The J2EE Tutorial v1.4- Sehr gute und umfassende Anleitung zur Entwicklung von
Anwendungen auf der Basis von J2EE- http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html
• Sun Microsystems - Java 2 Platform, Enterprise Edition (J2EE) Specification, Version 1.4- Die führende Spezifikation zur J2EE-Plattform- http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf
• Sun Microsystems; Enterprise JavaBeans Specification, Version 2.1- http://java.sun.com/products/ejb/docs.html
• Sun Microsystems; Java Servlet Specification, Version 2.4- http://java.sun.com/products/servlet/download.html
5
Einführung und Motivation
Literaturempfehlungen (2/2)
• Sun Microsystems; JavaServer Pages Specification, Version 2.0- http://java.sun.com/products/jsp/reference/api/index.html
• Singh, I.; Stearns, B.; Johnson, M. et al.; Designing EnterpriseApplications with the J2EE Platform, Second Edition; Addison Wesley; Boston, San Francisco, New York; 2002- http://java.sun.com/blueprints/guidelines/designing_enterprise_a
pplications_2e/index.html• Aufgrund des Umfangs wird ein gezieltes Studium einzelner
Kapitel empfohlen!
6
Einführung und Motivation
Begriffsdefinitionen
• Plattform (engl. platform)- "6. Computer Science The basic technology of a computer
system's hardware and software that defines how a computer is operated and determines what other kinds of software can be used.“ [American Heritage Dictionary of the English Language; http://www.bartleby.com/61/]
- Entwicklung und Ausführung von Software• Entwicklungsplattform
- Engerer Fokus auf die Entwicklung von Software- Beispiele: J2EE, .NET, COBOL, usw.
7
Einführung und Motivation
Relevanz der Vorlesungsinhalte
Die Plattformen J2EE und .NET gehören zu den Grundkenntnissen eines (Wirtschafts-)Informatikers, da diese
Plattformen bei einem Großteil der Entwicklungen von transaktionsbasierten Anwendungen eingesetzt werden.
8
Einführung und Motivation
Anteile bei Neuentwicklungen
J2EE und .NETsonstige
Relative Anteile der Entwicklungsplattformen bei
transaktionsbasierten Neuentwicklungen
15%
85%
Quelle:Gartner/namics ag
9
Einführung und Motivation
Anteile bei existierenden transaktionsbasierten Anwendungen
COBOL/CICSsonstige
25%
75%
Relative Anteile der Entwicklungsplattformen
existierenden transaktionsbasierten
Anwendungen
Quelle:Ovum
10
Einführung und Motivation
Beispiel: SAP
25%
• NetWeaver-Plattform und interne Entwicklungen basieren auf J2EE und ABAP
• J2EE ist die Plattform für Neuentwicklungen
• .NET wird „unterstützt“
DB and OS Abstraction
.NET WebSphere…
People Integration
Com
posi
te A
pplic
atio
n Fr
amew
ork
Process IntegrationIntegration
BrokerBusiness Process
Management
Information IntegrationBusiness
IntelligenceKnowledge
Management
Life Cycle M
anagement
Portal Collaboration
J2EE ABAP
Application Platform
Multi-Channel Access
SAP SAP NetWeaverNetWeaver™™
DB and OS Abstraction
Master Data Management
Quelle: SAP
11
Einführung und Motivation
Beispiel: Siebel
Quelle: Siebel
• Aktuelle Versionen unterstützen J2EE und .NET• Ältere Versionen basierten nur auf .NET• Web Services ermöglichen Interoperabilität zwischen den
beiden Plattformen
12
Einführung und Motivation
Rollen in einer Projektorganisation
Projektmanagement
Anwendungs-entwicklung AnwendungstestAnforderungs-
management Technische Architektur
TesterDesignerAnalyst Softwarearchitekt
Entwickler
Projektmanager
13
Verteilte Softwarearchitekturen
Verantwortlichkeiten und beispielhafte Aufgaben (1/3)
• Analyst- Erstellung eines HTML-
basierten Prototypen
• Softwarearchitekt- Identifikation der
Komponenten der Softwarearchitektur
- In welcher Schicht der Softwarearchitektur wird die Validierung der Benutzereingaben ausgeführt?
• Analyst- Analyse und Definition
der fachlichen Anforderungen
- Erstellung des Fachkonzepts
• Softwarearchitekt- Entwurf der
Softwarearchitektur- Definition der grund-
legenden technischen Entscheidungen
- Definition des projekt-weiten Rahmens für die einzelnen Entwurfs-entscheidungen
14
Verteilte Softwarearchitekturen
Verantwortlichkeiten und beispielhafte Aufgaben (2/3)
• Designer- Entwurf einer
Komponente mit ihren Schnittstellen im Kontext der Softwarearchitektur
• Entwickler- Test im Kontext der
Softwarearchitektur- Test in den
verschiedenen Umgebungen
• Designer- Entwurf eines Teils der
Anwendung bzw. des Systems unter Berücksichtigung der Anforderungen, der Softwarearchitektur und den projektweiten Entwurfsrichtlinien
• Entwickler- Implementierung und
Test der einzelnen Systemkomponenten
15
Verteilte Softwarearchitekturen
Verantwortlichkeiten und beispielhafte Aufgaben (3/3)
• Tester- Definition und
Koordination der Testumgebungen
• Projektmanager- Erstellung des
Arbeitsplans- Erstellung der
Projektorganisation- Anforderungs-
management
• Tester- Planung, Koordination
und Durchführung des Anwendungstests
• Projektmanager- Planung und Steuerung
des Projektes- Koordination der
Projektressourcen- Abstimmung der
fachlichen Anforderungen und Projektprioritäten unter Berücksichtigung der technischen Rahmenbedingungen
16
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
17
Verteilte Objekte und Komponenten
Motivation
Rechner 1
• Verbindung des objekt-orientierten Paradigmas mit den Konzepten verteilter Systeme
• Rechner- und betriebssystemübergreifender Zugriff eines Objekts auf die Methoden eines anderen Objekts
Rechner 2Rechner 1
Objekt A
Objekt B
Objekt A Objekt B
18
Verteilte Objekte und Komponenten
Object Broker Pattern
Rechner 2(Server)
Rechner 1(Client)
Objekt A Objekt B
Server-Proxy
Object RequestBroker
Client-Proxy
Object RequestBroker
Methoden-
aufruf
Request Reply
Methoden-
ergebnis
Reply Request
Methoden-
aufruf
Methoden-
ergebnis
RPC
19
Verteilte Objekte und Komponenten
Implikationen der Verteilung
• Performance- bei einem verteilten
Methodenaufruf erfolgt eine RPC-Kommunikation über das Netzwerk
- Granularität der Objekte: Objekt vs. Komponente
• Zuverlässigkeit- das Netzwerk ist eine
zusätzliche Fehlerquelle• Sicherheit
- die RPC-Kommunikation muss gesichert werden
• Komplexität- höher: RPC-Kommunikation
und Ortstransparenz
Rechner 2(Server)
Rechner 1(Client)
Objekt A Objekt B
Server-Proxy
Object RequestBroker
Client-Proxy
Object RequestBroker
Methoden-
aufruf
Request Reply
Methoden-
ergebnis
Reply Request
Methoden-
aufruf
Methoden-
ergebnis
RPC
20
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
21
Verteilte Softwarearchitekturen
Ziele der Vorlesungseinheit
• Verständnis der Ziele und Eigenschaften einer Software-architektur
• Verständnis und Anwendung des Sichten- und Schichten-konzepts
• Verständnis und Bewertung der Einflussfaktoren von Softwarearchitekturen
• Kenntnis und Identifikation der wesentlichen Architekturstile• Verständnis der Relevanz der Softwarearchitektur innerhalb
des Projektmanagements
22
Verteilte Softwarearchitekturen
Begriffsdefinition: Softwarearchitektur
• Keine einheitliche, allgemein anerkannte Definition• Website des Software Engineering Institutes (SEI) der
Carnegie Mellon Universität- Siehe http://www.sei.cmu.edu/- Veröffentlichte Begriffsdefinitionen > 30
• http://www.sei.cmu.edu/architecture/published_definitions.html- Definition der Besucher der Website > 150
• http://www.sei.cmu.edu/architecture/community_definitions.html
23
Verteilte Softwarearchitekturen
Begriffsdefinition: Softwarearchitektur - Beispiele
• Balzert, Helmut: „Eine Software-Architektur ist eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie Beschreibung ihrer Komponenten.“([Balz96], Seite 639)
• Bass, Len; Clements, Paul; Kazman, Rick: „The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.“([BaCK03], Seite 21)
24
Verteilte Softwarearchitekturen
Eigenschaften einer Softwarearchitektur (1/2)
• Systeme können durch mehrere Strukturen bzw. Anordnungen beschrieben werden- jede Struktur bzw. Anordnung definiert eine Sicht auf das
identische System• Kontext der Vorlesung:
- Softwarearchitektur = Anwendungsarchitektur- Softwarearchitektur ≠ Systemarchitektur (auch: Hardware-
architektur)- Vergleiche: Anwendungsarchitektur vs. Datenarchitektur
Quelle: in Anlehnung an [BaCK03]
25
Verteilte Softwarearchitekturen
Eigenschaften einer Softwarearchitektur (2/2)
• Definition von Softwareelementen und deren Beziehungen- interne Informationen über die Softwareelemente sind nicht
relevant, sofern sie die Beziehung zwischen zwei Elementen nicht beeinflussen (Prinzip der Abstraktion)
- Softwareelemente interagieren über Schnittstellen- Schnittstellen trennen öffentliche Informationen über
Softwareelemente von privaten (internen) Informationen (Prinzip des Information Hiding)
- siehe [Parn1972]
Quelle: in Anlehnung an [BaCK03]
26
Verteilte Softwarearchitekturen
Ziele einer Softwarearchitektur (1/2)
• Entwurf einer Anwendung bzw. eines Softwaresystems auf einem hohen Abstraktionsniveau- Instrument zur Kommunikation- Grundlage und Rahmen für die detaillierten Entwürfe der
einzelnen Softwareelemente• Identifikation der grundsätzlichen Typen von
Softwareelementen- Beispiele: Masken/Webseiten, Module, Datenbanken
• Strukturierung und Gruppierung der Softwareelemente- Orientierungshilfe in der Menge der konkreten Softwareelemente- Grundlage für die Planung innerhalb des Projektmanagements
Quelle: in Anlehnung an [BaCK03] und [Balz96]
27
Verteilte Softwarearchitekturen
Ziele einer Softwarearchitektur (2/2)
• Identifikation von Schnittstellen- innerhalb der Anwendung bzw. des Softwaresystems- zu anderen Anwendungen bzw. Softwaresystemen
• Definition von grundsätzlichen Entwurfsrichtlinien und -entscheidungen- Frühzeitige Entscheidungen, welche nur schwierig und/oder mit
großem Aufwand zu ändern sind- Beispiel: Technologie der Benutzeroberfläche: Windows-Client,
Java-Client, Web-basierter Client
Quelle: in Anlehnung an [BaCK03] und [Balz96]
28
Verteilte Softwarearchitekturen
Sichten auf Softwarearchitekturen (1/2)
• Zahlreiche Sichten auf die identische Softwarearchitektur möglich- Beispiel: Rational Unified Process (RUP) empfiehlt 5 Sichten
(sog. 4+1 Model) (vgl. [Kruc95])• Jede Sicht beschreibt bestimmte Aspekte der
Softwarearchitektur- unterschiedliche Zielgruppen: Projektmanager, Designer,
Entwickler, Tester
29
Verteilte Softwarearchitekturen
Sichten auf Softwarearchitekturen (2/2)
• Notation der Beschreibung- Unterschiede: objektorientierter vs. strukturierter Entwurf- Beispiel: Verwendung der Unified Modelling Language (UML) im
Rational Unified Process (RUP)- Beispiel: Verwendung von Datenflussdiagrammen und
Funktionsbäumen innerhalb der Strukturierte Analyse (nach DeMarco)
30
Verteilte Softwarearchitekturen
Beispiel: Sichten des RUP (1/2)
• Logical View- die wichtigsten Klassen/Komponenten auf Entwurfsebene und
ihre Organisation in Packages und Subsystems- Beziehungen zwischen den Klassen/Komponenten (Nutzung,
Vererbung, usw.)- Organisation der Packages und Subsystems in Schichten
• Implementation View- Verfeinerung und Detaillierung der logischen Sicht- Klassen/Komponenten auf Implementierungsebene und ihre
Organisation in Packages und Subsystems- Beziehungen zwischen den Klassen/Komponenten- Organisation der Packages und Subsystems in Schichten
Quelle: in Anlehnung an [Rati03]
31
Verteilte Softwarearchitekturen
Beispiel: Sichten des RUP (2/2)
• Process View- Beschreibung der Tasks (Prozesse, Threads), deren
Interaktionen und Konfigurationen- Allokation der Objekte und Komponenten zu Tasks
• Deployment View- Beschreibung der physischen Rechnerknoten (Nodes) und ihre
Konfiguration- Allokation der Tasks zu Rechnerknoten
• Use Case View- Use Cases und Scenarios, welche das wesentliche Verhalten
der Softwarearchitektur beschreiben- Beispiel: Was passiert innerhalb der Softwarearchitektur, wenn
der Benutzer den Button X auswählt?Quelle: in Anlehnung an [Rati03]
32
Verteilte Softwarearchitekturen
Softwarearchitektur: logische Sicht
Quelle: in Anlehnung an [Balz96]
Komponente 8
Komponente 10
Komponente 9
Komponente 5
Komponente 6
Komponente 1
Komponente 2
Komponente 3
Komponente 4
Komponente 7
Komponente X nutzt Komponente Y
33
Verteilte Softwarearchitekturen
Softwarearchitektur: logische Sicht mit Schichten
Quelle: in Anlehnung an [Balz96]
Schicht 0
Schicht 1
Schicht 2
Komponente 2.1 Komponente 2.2 Komponente 2.3
Komponente 1.1 Komponente 1.2
Komponente 0.1 Komponente 0.2 Komponente 0.3 Komponente 0.4
Komponente 1.3
Komponente X nutzt Komponente Y
34
Verteilte Softwarearchitekturen
Schichtenarchitekturen
• Gruppierung der Softwareelemente in Schichten- Softwareelemente können innerhalb einer Schicht beliebig
aufeinander zugreifen (vgl. [Dijk1967])- Zwischen den Schichten gelten strengere Zugriffsregeln (vgl.
[Dijk1967])• Schichtenarchitektur mit linearer Ordnung:
- Anordnung der Schichten nach ihrem Abstraktionsniveau- Jede Schicht kann nur auf die nächst niedrigere Schicht
zugreifen• Schichtenarchitektur mit strikter Ordnung:
- Von Schichten mit höherem Abstraktionsniveau kann auf alle Schichten mit niedrigerem Abstraktionsniveau zugegriffen werden – allerdings nicht umgekehrt
Quelle: in Anlehnung an [Balz96]
35
Verteilte Softwarearchitekturen
Definition der Softwarearchitektur in der Entwurfsphase
Planungs-phase
Analyse-phase
Entwurfs-phase
Implement-ierungs-phase
Test-phase
Einführ-ungs-phase
Software-architektur
Entwürfe der Software-elemente
36
Verteilte Softwarearchitekturen
Beispiel: Vorgehensweise in der Entwurfsphase
Abbildung ist bewusst nicht in den Folien enthalten!
37
Verteilte Softwarearchitekturen
Beispiel: Entwurf einer Softwarearchitektur
GUI Service Backend
HTTPS HTML
View
Controller
Ses
sion
Faca
de
Dis
patc
her Kontroll-
modul
Rechen-modul
Datenzu-griffsmodul
Datenlese-modul
EntityBean
Model
FormBean
ActionBean
TransferObject
Stamm-/Bewegungsdaten
Benutzer/Rechte
MQ
Softwareelement X nutzt Softwareelement Y
38
Verteilte Softwarearchitekturen
Einflussfaktoren auf eine Softwarearchitektur nach Bass et al. (1/2)
Quelle: in Anlehnung an [BaCK03]
technische Umgebung• Gegebene Entwicklungs-
plattform (z.B. Mainframe)
Stakeholders• Kunden, Benutzer, Entwickler,
Projektmanager, Wartungs-personal
Softwarearchitektur
Unternehmen• Kenntnisse und Fähigkeiten
der Entwickler• Strategische Ziele (Program
Management)
Kenntisse und Erfahrungen des
Architekten• Projekterfahrungen,
Schulungen
39
Verteilte Softwarearchitekturen
Einflussfaktoren auf eine Softwarearchitektur nach Balzert (2/2)
Quelle: in Anlehnung an [Balz96]
Umgebungs- und Randbedingungen
• Gegebene Plattform-Architektur (z.B. Mainframe)
Einsatzbedingungen• sequenziell• nicht sequenziell (nebenläufig,
verteilt, Echtzeit, parallel)
Softwarearchitektur
Nicht funktionaleProduktanforderungen
• Änderbarkeit, Effizienz, Zuverlässigkeit
Nicht funktionaleQualitätsanforderungen
• Skalierbarkeit, Wieder-verwendbarkeit, Reaktions-zeit
40
Verteilte Softwarearchitekturen
Bewertung von Softwarearchitekturen - Problematik
GUI Service Backend
HTTPS HTML
View
Controller
Ses
sion
Faca
de
Dis
patc
her Kontroll-
modul
Rechen-modul
Datenzu-griffsmodul
Datenlese-modul
EntityBean
Model
FormBean
ActionBean
TransferObject
Stamm-/Bewegungsdaten
Benutzer/Rechte
MQ
gut? schlecht?
2,2 ? 7 von 10 ?
gut? schlecht?
2,2 ? 7 von 10 ?
41
Verteilte Softwarearchitekturen
Bewertung von Softwarearchitekturen - Annahmen
• Keine Bewertung auf Basis einer Skala möglich- es gibt keine „gute“ oder „schlechte“ Softwarearchitektur
• Bewertung kann nur im Kontext von spezifischen Anforderungen erfolgen- Bewertung = Aussage über den Grad der Erfüllung der
spezifizierten Anforderungen
• Beachte die Relevanz der Softwarearchitektur- Entwurfsentscheidungen, welche innerhalb der
Softwarearchitektur getroffen werden, unterstützen oder behindern die Erreichung nahezu aller Qualitätsmerkmale einer nicht-trivialen Anwendung
42
Verteilte Softwarearchitekturen
Funktionsorientierte Strukturierung in drei Schichten
• Präsentation- Menüstrukturen, Bearbeitungsmasken, Berichte- Beispiel: Web-Client, Windows-Client
• Geschäftslogik- Geschäftprozesse, -objekte und -funktionen- Beispiel: Verbuchung einer Wareneingangsrechnung,
Kalkulation eines Verkaufspreises• Datenhaltung
- Verwaltung und Organisation der Daten- Beispiel: relationales Datenbankmanagementsystem, Dateien
Verteilung der Schichten auf unterschiedliche Rechnerknoten?
43
Verteilte Softwarearchitekturen
Verteilung der Schichten: Architekturstile und Muster
• Definition der Verteilung von Präsentation, Geschäftslogik und Datenhaltung- Abhängig von der Entwicklungsplattform, welche bestimmte
Parameter der Verteilung definiert• Grundlegende Architekturstile
- Host/Mainframe-Softwarearchitektur- Client/Server-Softwarearchitektur- Mehrschichtige Softwarearchitektur
44
Verteilte Softwarearchitekturen
Host/Mainframe-Softwarearchitektur
Mainframe/Host
Präsentation
Geschäftslogik
Datenhaltung
• Präsentations-, Geschäftslogik- und Datenhaltungsschicht liegen auf einem Rechnerknoten
• Beachte: Strukturierung in Schichten ist insbesondere bei Altsystemen nicht immer erfolgt
45Server
Verteilte Softwarearchitekturen
Client/Server-Softwarearchitektur
Client
Präsentation
Geschäftslogik
Datenhaltung
• Präsentations- und Datenhaltungsschicht auf unterschiedlichen Rechner-knoten
• Verteilung der Geschäftslogik kann variieren
• „Fat Client“
46
Verteilte Softwarearchitekturen
Variationen der Client/Server-Softwarearchitektur
Server
Client
Präsentation
Geschäftslogik
Datenhaltung
Server
Client
Präsentation
Geschäftslogik 1
Datenhaltung
Geschäftslogik 2
47
Verteilte Softwarearchitekturen
Mehrschichtige Softwarearchitektur
Client
Präsentation
Applikationsserver
Geschäftslogik
Datenserver
Datenhaltung
• Verteilung der Schichten auf mehreren Rechnerknoten• „Thin Client“
48
Verteilte Softwarearchitekturen
Variation der mehrschichtigen Softwarearchitektur
Client
PräsentationApplikationsserver
Geschäftslogik
Datenserver
Datenhaltung
Applikationsserver
Geschäftslogik
49
Verteilte Softwarearchitekturen
Softwarearchitekturen in der Praxis
Client
Präsentation
Applikationsserver
Geschäftslogik
Datenserver
Datenhaltung
Mainframe/Host
Geschäftslogik
Datenhaltung
• Heterogenität durch Variation der „grundlegenden“ Software-architekturen
50
Verteilte Softwarearchitekturen
Best Practices und Patterns
• J2EE- Mehrschichtige Softwarearchitektur- „Core J2EE Patterns: Best Practices and Design Strategies“- http://www.corej2eepatterns.com/index.htm
• .NET- Mehrschichtige Softwarearchitektur- „Patterns & Practices“- http://www.microsoft.com/resources/practices/default.mspx
51
Verteilte Softwarearchitekturen
Anforderungen und Probleme
• Günstige und schnelle Entwicklung von Anwendungen
• Vollständige Integration der unternehmens-internen Anwendungen
• Skalierbarkeit der Anwendungen
• Differenzierte Definition von Sicherheits-eigenschaften
• Hohe Komplexität
• Reduzierung der Entwicklungs- und Betriebskosten
• Schnelle Reaktions-geschwindigkeit
• Öffnung der Unternehmen nach außen - Kunden, Lieferanten,
Partner• Ganzheitliche
Geschäftsprozesse• Kurze Lebenszyklen der
Produkte- bzw. Dienstleistungen
52
Verteilte Softwarearchitekturen
Literaturangaben (1/2)
• [BaCK03] Bass, Len; Clements, Paul; Kazman, Rick; Software Architecture in Practice; 2. Auflage; Addision-Wesley; Boston; 2003- Chapter 1 - The Architecture Business Cycle- Chapter 2 - What is Software Architecture
• [Balz96] Balzert, Helmut; Lehrbuch der Software-Technik: Software-Entwicklung; Spektrum Akademischer Verlag; Heidelberg, Berlin, Oxford; 1996- Kapitel 3.1 Einführung und Überblick (aus Kapitel 3 - Die
Entwurfsphase)• [Dijk1967] Dijkstra, Edsger W.: The structure of the "the"-
multiprogramming system. In: Proceedings of the first ACM symposium on Operating System Principles. ACM Press, New York 1967. S. 10.1-10.6.
53
Verteilte Softwarearchitekturen
Literaturangaben (2/2)
• [Kruc95] Kruchten, Philippe; Architectural Blueprints—The "4+1" View Model of Software Architecture; In, IEEE Software; Vol. 12 No. 6; November 1995; pp. 42-50.
• [Parn1972] Parnas, D. L.: On the Criteria to be used in Decomposing Systems into Modules. In: Communications of the ACM 15 (1972) 12, S. 1053 - 1058.
54
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
55
J2EE-Plattform
Ziele der Vorlesungseinheit
• Verständnis der Elemente und Positionierung der J2EE-Plattform
• Verständnis der Beziehung zwischen der J2EE-Spezifikation und der Umsetzung in Produkten
56
J2EE-Plattform
Java-Plattform
Quelle: in Anlehnung an http://java.sun.com/
• software-basierte Plattform, welche auf verschiedenen Betriebssystemen implementiert ist
• Java Virtual Machine - Windows, Unix, Mainframe
• Laufzeitumgebung / Java APIs- grundlegende Klassen und
Schnittstellen- Abstraktion vom
Betriebssystem (z.B. Dateien, Threads)
Betriebssystem
Java Virtual Machine
Java Anwendung
Laufzeitumgebung /Java APIs
57
J2EE-Plattform
• Definition einer Plattform, welche Kosten und Komplexität von verteilten, mehrschichtigen Anwendungen reduziert
• Definition einer standardisierten Softwarearchitektur, welche aus vier Elementen besteht
Begriffsdefinition: J2EE
Java 2 Platform, Enterprise Edition
Specification
CompatibilityTest Suite Blue Prints
Reference Implementation
Quelle: in Anlehnung an [Sun04a]
58
J2EE-Plattform
• Java 2 Platform, Standard Edition (J2SE)- APIs, Compiler, Tools, Runtimes zur Entwicklung und
Ausführung von Applets und PC-Anwendungen• Java 2 Platform, Enterprise Edition (J2EE)
- basiert auf J2SE- weitere APIs, Tools und Services - Entwicklung und Ausführung von komponenten-basierten,
mehrschichtigen Anwendungen• Java 2 Platform, Micro Edition (J2ME)
- Technologien und Spezifikationen im Umfeld von eingebetteten Systemen und Multimedia-Geräten
- PDAs, Mobiltelefone, TV Set-top boxes usw.
Positionierung von J2EE
Quelle: siehe http://java.sun.com/
59
J2EE-Plattform
• Kein Produkt, sondern eine Spezifikation- Spezifikation vs. Standard
• Veröffentlichung und Weiterentwicklung innerhalb des Java Community Process- Konsortium von IT-Herstellern- Industrie-Standard bzw. De-facto-Standard- aktuelle Version im „Final Release“ ist v1.4
• http://jcp.org/en/jsr/detail?id=151- nächste Version im „Public Review“: Java Platform, Enterprise
Edition 5 (Java EE 5) • http://jcp.org/en/jsr/detail?id=244
• Definition einer standardisierten Softwarearchitektur• Umsetzung in einer Referenzimplementierung und konkreten
Produkten
Java 2 Platform, Enterprise Edition Specification
60
J2EE-Plattform
Referenzimplementation
• Sun Java System Application Server Platform Edition- frei verfügbarer, J2EE-kompatibler
Applikationsserver- ab Version 8 wird die Version 1.4 der
Spezifikation unterstützt- http://java.sun.com/j2ee/1.4/
download.html- Java Platform, Enterprise Edition 5
(Java EE 5) wird in Open Source umgesetzt
- https://glassfish.dev.java.net/GlassFish Open Source Java EE 5 Application Server
61
J2EE-Plattform
J2EE-kompatible Produkte (Beispiele)
• WebSphere Application Server- kommerzieller Applikationsserver- http://www.ibm.com/software/
webservers/appserv/was/- ab Version 6.0 wird die Version 1.4
der Spezifikation unterstützt• BEA WebLogic Server
- kommerzieller Applikationsserver- http://www.bea.com/- Version 8.1 unterstützt die Version
1.3 der Spezifikation
62
J2EE-Plattform
J2EE-kompatible Produkte (Beispiele)
• Oracle Application Server- kommerzieller Applikationsserver- Version 10g wird die Version 1.4 der
Spezifikation unterstützen- http://www.oracle.com/
• SAP Netweaver / SAP Web Application Server- kommerzieller Applikationsserver- Version 6.30 unterstützt die Version
1.3 der Spezifikation- http://www.sap.com/
63
J2EE-Plattform
J2EE-kompatible Produkte (Beispiele)
• JBoss- Open-Source Applikationsserver- Version 4.0 unterstützt die Version 1.4 der Spezifikation- http://www.jboss.org/
64
J2EE-Plattform
Compatibility Test Suite
• Überprüfung einer Anwendung- Java Application Verification Kit (AVK) for
the Enterprise- Werkzeug zur Überprüfung der
Kompatibilität von Anwendungen- Kompatibilität = Anwendung läuft in allen
Applikationsservern• Lizenzierung eines Applikationsservers
- Attribut "J2EE-kompatibel" muss lizenziert und die Compatibility Test Suite muss durchlaufen werden
- http://java.sun.com/j2ee/verified/
65
J2EE-Plattform
• auch: Java BluePrints Program• Richtlinien
- u.a. Konventionen für Dateinamen und Verzeichnisstrukturen• Patterns
- auf der Ebene der Softwarearchitektur- J2EE-Pattern-Katalog- Alur, D.; Crupi, J.; Malks, D.; Core J2EE Patterns - Best
Practices and Design Strategies, Second Edition; Prentice Hall; New York; 2003
- Singh, I.; Stearns, B.; Johnson, M. et al. - Designing Enterprise Applications with the J2EE Platform, Second Edition
• Beispielanwendungen- Java Pet Store Sample Application- Java Adventure Builder Reference Application
BluePrints
66
J2EE-Plattform
J2EE-Pattern-Katalog
Quelle: http://www.corej2eepatterns.com/
67
J2EE-Plattform
Literaturangaben
• [Sun04a] Sun Microsystems; Java 2 Platform, Enterprise Edition (J2EE) Specification, v1.4; http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf- Chapter J2EE.1 - Introduction
• [AlCM03] Alur, D.; Crupi, J.; Malks, D.; Core J2EE Patterns -Best Practices and Design Strategies, Second Edition; Prentice Hall; New York; 2003- siehe auch: http://www.corej2eepatterns.com/
68
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
69
J2EE-basierte Softwarearchitektur
Inhalte des Kapitels "J2EE-basierte Softwarearchitektur"
• Grundlagen der J2EE-basierten Softwarearchitektur• Servlets• JavaServer Pages• Enterprise JavaBeans
70
J2EE-basierte Softwarearchitektur
Ziele der Vorlesungseinheit
• Verständnis der Komponenten einer J2EE-basierten Anwendung
• Verständnis und Bewertung der standardisierten Software-architektur
• Verständnis und Analyse der J2EE-Anwendungs-komponenten und des Container-Konzepts
• Verständnis und Bewertung der Container-Dienste• Verständnis der Paketierung und Installation von J2EE-
Anwendungen• Verständnis der Modulstruktur einer J2EE-Anwendung
71
J2EE-basierte Softwarearchitektur
Begriffsdefinition: Komponente
• Komponente = Komponente bzw. Softwareelement einer Softwarearchitektur
• Beispiele (siehe Kapitel ‚verteilte Softwarearchitekturen‘): - Balzert, Helmut:
„Eine Software-Architektur ist eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie Beschreibung ihrer Komponenten.“([Balz96], Seite 639)
- Bass, Len; Clements, Paul; Kazman, Rick: „The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.“([BaCK03], Seite 21)
72
J2EE-basierte Softwarearchitektur
Komponenten einer J2EE-basierten Anwendung
• Anwendungskomponenten- Komponenten, welche anwendungsspezifische Funktionen
implementieren• Container
- Laufzeitumgebung für Anwendungskomponenten einer J2EE-Architektur
• Dienste- Komponenten, welche allgemeine Funktionen implementieren
und von einem Container bereitgestellt werden- Zugriff über ein Application Programming Interface (API)
• Server- Kann ein oder mehrere Container verwalten
73
J2EE-basierte Softwarearchitektur
Standardisierte Softwarearchitektur
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Datenbank
APIs
APIs
APIs APIs
ApplicationClient
JSP Servlet EJB
Quelle: in Anlehnung an [Sun04a]
Komponente X nutzt Komponente Y
74
J2EE-basierte Softwarearchitektur
Anwendungskomponenten
• Applets- werden in einem Web Browser ausgeführt- besitzen eine grafische Oberfläche
• Application Clients- Java-Anwendungen, welche auf einem PC ausgeführt werden- besitzen i.d.R. eine fenster-basierte, grafische Oberfläche
• Web-Komponenten- Servlets und JavaServer-Pages- können HTTP-basierte Requests bearbeiten
• Enterprise JavaBeans- server-seitige Komponenten, welche i.d.R. die Geschäftslogik
implementieren und im Kontext von Transaktionen aufgerufen werden
Quelle: in Anlehnung an [Sun04a]
75
J2EE-basierte Softwarearchitektur
Container-Konzept
• Laufzeitumgebung für Anwendungskomponenten einer J2EE-Architektur
• Bereitstellung von APIs, welche von den Anwendungs-komponenten genutzt können
• Container nutzen Protokolle, um miteinander zu kommunizieren
• Bereitstellung von Diensten- Verzeichnis- und Namensdienste, Datenbankverbindungen,
Transaktionen, Nachrichtendienste usw.• Trennung der Geschäftslogik von den Diensten der J2EE-
Plattform
Quelle: in Anlehnung an [Sun04a]
76
J2EE-basierte Softwarearchitektur
• J2EE-Spezifikation definiert, welche APIs von den Containern angeboten werden müssen
• Container-Werkzeuge zur Verwaltung des Containers und der Anwendungs-komponenten
• Interpretation eines standardisierten Dateiformats, um die Anwendungskomponenten im Container installieren zu können
Eigenschaften eines Containers
EJB Container
APIs
EJB 4
EJB 3
EJB 2
EJB 1
Beispiel: EJB Container
77
J2EE-basierte Softwarearchitektur
Vorteile des Container-Konzepts
• Implementation von grundlegenden Klassen und Funktionen- APIs der J2SE und J2EE
• Implementation und Kapselung von Kommunikations-protokollen
• Bereitstellung und Wiederverwendung von Diensten- Management von Verbindungen (Connection Pooling)- Unterstützung von Transaktionen- Sicherheitsfunktionen- Lebenszyklusmanagement- Verzeichnisdienste
• Plattform-Unabhängigkeit• Skalierbarkeit
- Kapselung der benötigten Funktionen durch die Container
78
J2EE-basierte Softwarearchitektur
Nachteile des Container-Konzepts
• Abhängigkeit der Anwendung vom Container- Container implementiert die Laufzeitumgebung und Dienste- Absturz des Containers führt zum Absturz der Anwendung
• Abhängigkeit der Anwendung von anderen Anwendungen- Anwendung A kann die Stabilität von Anwendung B gefährden,
wenn beide Anwendungen im identischen Container ausgeführt werden
• Implementation der vom Container geforderten Schnittstellen notwendig- Flexibilität vs. Wiederverwendung
79
J2EE-basierte Softwarearchitektur
Klassifikation der Dienste
• Protokolle und Datenformate- Ziel ist die Interoperabilität zwischen verschiedenen
Anwendungskomponenten und Containern- Gruppen von unterstützten Protokollen und Datenformaten:
• Internet und WWW-Protokolle• Protokolle der Object Management Group (OMG)• Protokolle der Java Technology• Diverse Datenformate
• Application Programming Interfaces (APIs)- auch: Programmierschnittstelle- analog zum Konzept der Protokolle und der ausgetauschten
Nachrichten- Fokus auf Java-basierte APIs
Quelle: in Anlehnung an [Sun04a]
80
J2EE-basierte Softwarearchitektur
IIOP
Dienste der Container - Überblick
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Database
J2SE
J2SE
J2SE J2SE
J2EE J2EE
J2EE
ApplicationClient
JSP Servlet EJB
Quelle: in Anlehnung an [Sun04a] und [Sun04b]
JRMP HTTP(S) JRMPIIOP HTTP(S)
SOAP/HTTP JRMPIIOP HTTP(S)
SOAP/HTTP
JRMPIIOP HTTP(S)
SOAP/HTTP
Client Server
81
J2EE-basierte Softwarearchitektur
Internet und WWW-Protokolle (1/2)
• TCP/IP-Protokollfamilie- TCP und UDP über IP- Unterstützung durch die J2SE, welche die jeweilige
Betriebssystemfunktionalität kapselt- siehe http://www.ietf.org und http://www.rfc-editor.org
• HTTP 1.1- Unterstützung durch die J2SE, welche die jeweilige
Betriebssystemfunktionalität kapselt- Client-seitiges API: java.net Package; Server-seitig: Servlet und
JSP-Interfaces- Web Container muss HTTP-basierte Dienste auf dem Port 80
bereitstellen können- siehe http://www.ietf.org und http://www.rfc-editor.org
82
J2EE-basierte Softwarearchitektur
Internet und WWW-Protokolle (2/2)
• SSL 3.0, TLS 1.0- Web Container muss HTTPS-basierte Dienste auf dem Port 443
bereitstellen können- SSL 3.0: siehe http://wp.netscape.com/eng/ssl3/- TLS 1.0: siehe http://www.ietf.org und http://www.rfc-editor.org
• SOAP 1.1- Unterstützung der SOAP-Spezifikation auf der Basis eines
HTTP-basierten Transportprotokolls- siehe http://www.w3.org/2000/xp/Group/
• WS-I Basic Profile 1.0- Detaillierte Parametrisierung des „Web Service-Protokollstack“
(SOAP, WSDL, UDDI) zur Sicherstellung der Interoperabilität zwischen verschiedenen Web Service-Implementationen
- siehe http://www.ws-i.org
83
J2EE-basierte Softwarearchitektur
Protokolle der Object Management Group (OMG) (1/2)
• Internet Inter-ORB Protocol (IIOP) 1.2- Teil der CORBA-Spezifikation der OMG:
Kommunikationsprotokoll zwischen Object Request Brokern- Verwendung des IIOP als Protokoll für Java Remote Method
Invocation (Java RMI)- siehe http://www.omg.org/cgi-bin/doc?formal/99-10-07
• EJB Interoperability Protocol- Detaillierte Parametrisierung des IIOP zur Nutzung als
Kommunikationsprotokoll zwischen Enterprise JavaBeans (EJB)- siehe Sun Microsystems - Enterprise JavaBeans Specification,
Version 2.1 ([Sun04b])
84
J2EE-basierte Softwarearchitektur
Protokolle der Object Management Group (OMG) (2/2)
• CORBA Interoperable Naming Service Protocol- IIOP-basiertes Protokoll zur Implementation eines verteilten
Namens- und Verzeichnisdienstes- siehe http://www.omg.org/cgi-bin/doc?formal/00-06-19
85
J2EE-basierte Softwarearchitektur
Protokolle der Java Technology
• Java Remote Method Protocol (JRMP)- Protokoll der ersten Versionen der Java Remote Method
Invocation (Java RMI) APIs- siehe http://java.sun.com/j2se/1.4.2/docs/guide/rmi/
86
J2EE-basierte Softwarearchitektur
Datenformate (1/2)
• XML 1.0- Basis für XML-basierte Dokumente und Nachrichten- siehe http://www.w3.org/XML/Core/
• HTML 3.2- Keine direkte Unterstützung durch APIs, aber Web Clients
müssen HTML darstellen können - siehe http://www.w3.org/MarkUp/
• Bildformate- Unterstützung der Formate GIF und JPEG entsprechend der
APIs im Package java.awt.image- http://java.sun.com/j2se/1.4.2/docs/api/java/awt/package-
summary.html
87
J2EE-basierte Softwarearchitektur
Datenformate (2/2)
• Java Archives (JAR)- Standardformat zur Paketierung und Installation von Java-
basierten Anwendungskomponenten- Installation von Applets vs. Installation im Container- siehe http://java.sun.com/j2se/1.4.2/docs/guide/jar/
• Java Class File Format- Datenformat zur Ausführung von Klassen in der Java Virtual
Machine- siehe http://java.sun.com/docs/books/vmspec/
88
J2EE-basierte Softwarearchitektur
IIOP
Dienste der Container - Überblick
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Database
J2SE
J2SE
J2SE J2SE
J2EE J2EE
J2EE
ApplicationClient
JSP Servlet EJB
Quelle: in Anlehnung an [Sun04a] und [Sun04b]
JRMP HTTP(S) JRMPIIOP HTTP(S)
SOAP/HTTP JRMPIIOP HTTP(S)
SOAP/HTTP
JRMPIIOP HTTP(S)
SOAP/HTTP
API
API
API
API
API API
API
89
J2EE-basierte Softwarearchitektur
APIs der J2SE
• Erforderliche Unterstützung der APIs der Java 2 Standard Edition, Version 1.4 durch alle Containertypen- siehe http://java.sun.com/j2se/1.4.2/docs/
• Folgende APIs sind in Bezug auf die J2SE optional, für die J2EE allerdings verbindlich- Java RMI over IIOP (RMI-IIOP)- Java IDL- Java Database Connectivity (JDBC) API- Java Naming and Directory Interface (JNDI) - Java API For XML Processing (JAXP)- Java Authentication and Authorization Service (JAAS)
90
J2EE-basierte Softwarearchitektur
Programmierschnittstelle zwischen einem Container und einer Nachrichten-basierten Middleware
Java Messaging Service (JMS) Specification 1.1
Server-seitige, verteilte KomponentenarchitekturEnterprise JavaBeans (EJB) Specification 2.1
Einbettung von Java-Code und vordefinierten Befehlen in statische HTML-Seiten; JSPs werden mit einem JSP-Compiler in Servlets übersetzt
JavaServer Pages (JSP) Specification 2.0
Erweiterung der Funktionalität eines Web Servers, um dynamische Webseiten auf der Basis der Java-Plattform zu erstellen; Gegenstück zu Technologien wie CGI und ASP
Servlet 2.4Beschreibung der Dienste/SchnittstellenAPI
APIs der J2EE (1/5)
91
J2EE-basierte Softwarearchitektur
Unterstützung der Konvertierung von MIME-Datentypen in Java-Objekte
JavaBeans Activation Framework (JAF) 1.0
Ermöglicht E-Mail-Nachrichten zu erstellen, zu versenden und zu empfangen (MIME, E-Mail Message Stores)
JavaMail 1.3
Programmierschnittstelle zwischen den beteiligten Parteien einer verteilten Transaktion (Anwendungen, Ressourcen Manager und Application Server)
Java Transaction API (JTA) 1.0
Beschreibung der Dienste/SchnittstellenAPI
APIs der J2EE (2/5)
92
J2EE-basierte Softwarearchitektur
Erstellung und Bearbeitung von XML-Dokumenten auf der Basis der Programmiermodelle SAX und DOM; Schnitt-stellen zu einer XSLT-Transformationsengine
Java API for XML Processing (JAXP) 1.2
RPC auf der Basis von SOAPJava API for XML-based RPC (JAX-RPC) 1.1
Beschreibung der Implementierung und Veröffentlichung eines Web Service Endpoints
Web Services for J2EE 1.1
Programmierschnittstelle zu Resource Adaptern, welche die Ausführung von Transaktionen unterstützen
J2EE Connector Architecture 1.5
Beschreibung der Dienste/SchnittstellenAPI
APIs der J2EE (3/5)
93
J2EE-basierte Softwarearchitektur
Programmierstelle für den Zugriff auf einen Verzeichnisdienst für Web Services entsprechend der Spezifikationen ebXML Registry und/oder UDDI
Java API for XML Registries (JAXR) 1.0
Erstellung und Bearbeitung von SOAP-basierten Nachrichten
SOAP with Attachments API for Java (SAAJ) 1.2
Einbindung von Komponenten der J2EE-Architektur in das J2EE Management Model
Java Management Extensions (JMX) 1.2
Steuerung und Überwachung von Komponenten der J2EE-Plattform (J2EE Management Model)
J2EE Management 1.0
Beschreibung der Dienste/SchnittstellenAPI
APIs der J2EE (4/5)
94
J2EE-basierte Softwarearchitektur
Schnittstelle zwischen einem Deployment Tool und einem J2EE-Server
J2EE Deployment 1.1
Definition von neuen java.security.Permission Klassen zur Implementation des Autorisierungsmodells der J2EE-Plattform
Java Authorisation Service Provider Contract for Containers (JACC) 1.0
Beschreibung der Dienste/SchnittstellenAPI
APIs der J2EE (5/5)
95
J2EE-basierte Softwarearchitektur
JaJaNeinNeinJTA 1.0
Nein
Nein
Nein
Nein
Applet
Ja
Ja
Ja
Ja
Web Container
Ja
Nein
Nein
Ja
Applicat-ion Client
JaJMS 1.1
NeinJSP 2.0
NeinServlet 2.4
JaEJB 2.1
EJB Container
API
API-Anforderungen an die Container (1/4)
Quelle: in Anlehnung an [Sun04a]
96
J2EE-basierte Softwarearchitektur
JaJaNeinJaWeb Services for J2EE 1.1
Nein
Nein
Nein
Nein
Applet
Ja
Ja
Ja
Ja
Web Container
Nein
Ja
Ja
Ja
Applicat-ion Client
JaConnector Architecture 1.5
JaJAXP 1.2
JaJAF 1.0
JaJavaMail 1.3
EJB Container
API
API-Anforderungen an die Container (2/4)
Quelle: in Anlehnung an [Sun04a]
97
J2EE-basierte Softwarearchitektur
JaJaNeinJaJMX 1.2
Nein
Nein
Nein
Nein
Applet
Ja
Ja
Ja
Ja
Web Container
Ja
Ja
Ja
Ja
Applicat-ion Client
JaManagement 1.0
JaJAXR 1.0
JaSAAJ 1.2
JaJAX-RPC 1.1
EJB Container
API
API-Anforderungen an die Container (3/4)
Quelle: in Anlehnung an [Sun04a]
98
J2EE-basierte Softwarearchitektur
JaJaNeinNeinJACC 1.0
NeinNeinNeinNeinDeployment 1.1
Applet Web Container
Applicat-ion Client
EJB Container
API
API-Anforderungen an die Container (4/4)
Quelle: in Anlehnung an [Sun04a]
99
J2EE-basierte Softwarearchitektur
Rollen in der Anwendungsentwicklung
• Dedizierte Rollen in der Anwendungs-entwicklung, z.B.- Web Designer- Web Entwickler- EJB Entwickler- Datenbank Entwickler
• Querschnittsrollen, z.B.- Technischer Architekt- Anwendungsarchitekt
• Große Anzahl und großer Umfang der APIs
• Hohe Anforderungen an Anwendungsentwickler
100
J2EE-basierte Softwarearchitektur
Web-Komponenten einer Anwendung
• Servlets• JavaServer Pages (JSP)• Client-seitige Applets, Klassen und Beans
- vor der Ausführung: Übertragung vom Web-Server auf den Client (Web Browser)
- Beans (auch: JavaBeans): Client-seitige Komponentenarchitektur
• Hilfsklassen- für Server-seitige Ausführung (Servlets)
• Statische Dokumente (HTML, Bilder, Videos, usw.)• Metainformationen
- Deployment Descriptor: Konfiguration und Verbindung der einzelnen Web-Komponenten
Quelle: in Anlehnung an [Sun04c]
101
Web Archive (WAR)
J2EE-basierte Softwarearchitektur
• Paketierung der einzelnen Web-Komponenten zur Installation in einem Web-Container
• Datenformat: Web ARchive Format (WAR)
• Vorteile:- Installation eines WAR vs.
Installation einzelner Web-Komponenten
- Konsistenz und Integrität- Paketierung und
Versionierung
Paketierung und Installation
Web Container
J2SE
J2EE
WAR-Datei
Servlets JSPs
Applets, Klassen,Beans
Hilfsklassen
StatischeDokumente
DeploymentDescriptor
102
J2EE-basierte Softwarearchitektur
Module einer J2EE-Anwendung
J2EE Anwendung.EAR Datei
Web Modul.WAR Datei
EJB Modul.JAR Datei
Client Modul.JAR Datei
Resource AdapterModul
.JAR Datei
EJBEJB DDServlet JSP HTML, GIF, usw.Web DD Client
ClassClient DD ResourceClass
ResouceDD
ApplicationDD
1 1
1
11 1
1
N N N N1
1 1 1 1
1 N
1 1
1 N
1 1 1 1
N N N N
103
J2EE-basierte Softwarearchitektur
Literaturangaben
• [Sun04a] Sun Microsystems; Java 2 Platform, Enterprise Edition (J2EE) Specification, v1.4; http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf- Chapter J2EE.2 - Plattform Overview- Chapter J2EE.6 - Application Programming Interface- Chapter J2EE.7 - Interoperability- Chapter J2EE.8 - Application Assembly and Deployment
104
Servlets
Ziele der Vorlesungseinheit
• Verständnis des Lebenszyklus, der Steuerung und der Verwaltung von Servlets
• Verständnis der Verteilungsaspekte von HTTP Server und Web Container
• Verständnis der Dienste des Web Containers in Bezug auf Servlets
• Verständnis des Filtering- und Session-Konzepts
105
Servlets
Positionierung in der Softwarearchitektur
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Datenbank
APIs
APIs
APIs APIs
ApplicationClient
JSP Servlet EJB
Quelle: in Anlehnung an [Sun04a]
Komponente X nutzt Komponente Y
106
Servlets
• Java-basierte Klasse, welche die Funktionalität eines Web Servers erweitert
• Erweiterung: Bereitstellung von dynamischen Inhalten auf der Basis eines Request-and-Response-Programmiermodells
• Unabhängig vom Kommunikationsprotokoll
• Abgeleitete Klassen zur Unterstützung des HTTP
Begriffsdefinition: Servlet
WebContainer
Servlet
HTTP
WebBrowser
Request
Response
Server
Servlet
Client Request
Response
107
Servlets
• Laufzeitumgebung für Servlets
• Steuerung und Verwaltung der Servlets- dynamisches Laden und
Instanziieren von Servlets- Management des
Lebenszyklus von Servlets• Implementation und
Kapselung des HTTP- Bereitstellung von HTTP-
Nachrichten durch Java-Objekte für Servlets
Begriffsdefinition: Servlet Engine / Servlet Container
WebContainer
J2SE
J2EE
Servlet
HTTP
WebBrowser
Request
Response
108
Servlets
• Der HTTP-Server kann im Prozess des Web Containers laufen oder als eigenständiger Prozess ausgeführt werden- Prozess vs. Thread- Bereitstellung von
statischen vs. dynamischen Inhalten
• Eigenständiger HTTP-Server wird über ein API integriert
Verteilungsaspekte von Web Servern
WebContainer
J2SE
J2EE
Servlet
HTTP
WebBrowser
Request
Response
WebContainer
J2SE
J2EE
Servlet
HTTP
WebBrowser
Request
Response
HTT
P Se
rver
API
HTT
P Se
rver
109
Servlets
Interface Servlet
• Schnittstelle, die von allen Servlets implementiert wird- javax.servlet.Servlet
• Methoden zum Management des Lebenszyklus- void init(ServletConfig config) - void destroy()
• Methode zur Verarbeitung von Requests- void service(ServletRequest req, ServletResponse res)
• Methoden zur Ermittlung von Informationen über das Servlet- ServletConfig getServletConfig()- String getServletInfo()
110
Servlets
• Aufruf der Methoden der Schnittstelle Servlet durch den Servlet Container
• Schnittstelle Servlet ist ein Vertrag zwischen dem Servlet Container und dem Servlet - dynamisches Laden und
Instanziieren von Servlets- Management des
Lebenszyklus von Servlets
Steuerung und Verwaltung der Servlets
WebContainer
J2SE
J2EE
Servlet
HTTP
WebBrowser
Request
Responsejavax.servlet.Servlet
111
Servlets
Klasse HTTPServlet (1/2)
• Abstrakte Klasse zur Verarbeitung von Requests auf der Basis des HTTP
• Abgeleitet von der abstrakten Klasse GenericServlet- GenericServlet wiederum implementiert die Schnittstelle Servlet
• Service-Methode wird überschrieben (Overriding)- void service(HttpServletRequest req, HttpServletResponse resp)
112
Servlets
Klasse HTTPServlet (2/2)
• Aufruf einer speziellen Methode entsprechend des Typs des HTTP-Requests durch die Service-Methode- doGet für HTTP GET Requests- doPost für HTTP POST Requests- doPut für HTTP PUT Requests- doDelete für HTTP DELETE Requests- doHead für HTTP HEAD Requests- doOptions für HTTP OPTIONS Requests- doTrace für HTTP TRACE Requests
• doGet- und doPost-Methode werden typischerweise von einem Anwendungsentwickler überschrieben
113
Servlets
Lebenszyklus eines Servlets
• Management des Lebenszyklus erfolgt durch den Servlet Container
• Wenn noch keine Instanz des Servlets existiert- Laden der Servlet-Klasse- Erstellung einer Instanz der Servlet-Klasse- Aufruf der init-Methode des Servlets
• Wenn ein HTTP-Request eintrifft- Aufruf der service-Methode mit den entsprechenden Request-
und Response-Objekten
114
Servlets
Mapping von Requests zu Servlets
• Konfiguration von Web-Komponenten durch Deployment Descriptors
• Mappings von Requests zu Servlets erfolgen auf der Basis von URL-Pfaden und Patterns
• Beispiel:- Mappings im Deployment Descriptor
• /foo/bar/* entspricht servlet1• /baz/* entspricht servlet2• /catalog entspricht servlet3
- Servlet-Aufrufe• Pfad: /foo/bar/index.html - Aufruf: servlet1• Pfad: /baz - Aufruf: servlet2• Pfad: /baz/index.html - Aufruf: servlet2• Pfad: /catalog - Aufruf: servlet3
115
Servlets
HTTP-Request
• Kapselung des HTTP-basierten Client-Requests in einem Java-Objekt- javax.servlet.http.HttpServletRequest- Instanziierung des Objekts durch den Servlet Container
• Zugriff auf die Parameter- HTTP GET Request: Parameter werden an URL gehängt
(Query-String)- HTTP POST Request: Parameter werden im Body transportiert
• Zugriff auf die Header- Bsp. User-Agent, Server, Last-Modified
• Zugriff auf Cookies- Typischerweise nur Namen und Wert des Cookies
116
Servlets
HTTP-Response
• Kapselung der HTTP-basierten Server-Response in einem Java-Objekt- javax.servlet.http.HttpServletResponse
• Instanziierung des Objekts durch den Servlet Container• Zugriff auf den Response-Buffer des Servlet Containers
- Bsp. getBufferSize, setBufferSize, resetBuffer• Zugriff auf die Header
- Bsp. Server, Last-Modified, Content-Type• Zugriff auf den Body
- Bsp. HTML, XML, MIME- Content-Type Header muss entsprechend gefüllt sein!
117
Servlets
Beispiel: Überschreiben der doGet-Methodepublic void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException{
System.out.println(“IE - Methode doGet() wird aufgerufen ...");
// Setzen des HTTP-Headers 'Content Type'resp.setContentType("text/html");
// Hole eine Referenz zum Character StreamPrintWriter out = resp.getWriter();
// Schreibe die HTML-Tags in den Character Streamout.println("<HEAD><TITLE>Integration Engineering</TITLE></HEAD>");
out.println("<BODY>");
out.println("<H1>Teil 1: Verteilte Anwendungen auf der Basis von J2EE</H1>");
out.println("<H2>Kapitel Servlets</H2>");
// Ausgabe zur Indentifikation der Seiteout.println("<P>Das ist die Ausgabe eines Servlets!</P>");
out.println("<BODY>");
// Schließe den Character Streamsout.close();
}
118
Servlets
Sequenz eines Servlet-Aufrufs
1 Benutzer: Eingabe der URL2 Web Browser: HTTP Request wird an Web Server/Web Container gesendet3 Web Container: Überprüfung der URL und Mapping auf das Servlet4 Web Container: Kapselung des Requests und Responses in jeweils einem Objekt
5 Web Container: Wenn noch keine Instanz des Servlets existiert, Laden und Erstellung einer Instanz der Servlet-Klasse, Aufruf der init-Methode des Servlets
6 Web Container: Aufruf der service-Methode des Servlets7 Servlet: Aufruf entsprechenden do-Methode8 Servlet: Schreiben der HTML-Tags in ein Buffer des Reponse-Objekts9 Web Container: HTTP Response wird auf der Basis des Response-Objektes erstellt und versendet
WebContainer
J2SE
J2EE
ServletWeb
BrowserRequest
Response
1
2
3 4 5
Request
Response
67
89
119
Servlets
Dispatching Requests (1/2)
• Dispatching- Weiterleitung von Requests an ein anderes Servlet- Einbindung der Ausgaben eines anderen Servlets
• RequestDispatcher-Objekt kapselt das entsprechende Servlet- RequestDispatcher rd = getRequestDispatcher(String path);- RequestDispatcher rd = getNamedDispatcher(String name);
• Weiterleitung- rd.forward(request, response);
• Einbindung- rd.include(request, response);
120
Servlets
Dispatching Requests (2/2)
WebContainer
J2SE
J2EE
Servlet AWeb
BrowserRequest
Response
1
2
3 4 5
Request
Response
67
89
Servlet B
Servlet C
?
121
Servlets
Filtering (1/2)
• Transformation eines HTTP-Requests und/oder -Responses• Manipulation und Anpassung eines Requests und/oder
Responses bevor oder nachdem ein Servlet aufgerufen wird• Einsatzszenarios
- Logging und Auditing- Kompression- Verschlüsselung- Trigger
• Filter implementieren die Schnittstelle javax.servlet.Filter- doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)• Verkettung von mehreren Filtern
- chain.doFilter()
122
Filter Chain
Servlets
Filtering (2/2)
WebContainer
J2SE
J2EE
ServletWeb
BrowserRequest
Response
1
2
3 4 5
Request
Response
67
89
Filte
r
Filte
r
Filter A Filter B Filter C
123
Response A
Request A
Request B
Response B
Servlets
• HTTP ist ein zustandlosesProtokoll
• Anforderung: mehrere Requests müssen einem Client zugeordnet und in einer Session gruppiert werden
• Mehrere Mechanismen zum Aufbau und der Verfolgung von Session verfügbar- Session Tracking
Mechanisms
Sessions
WebContainer
J2SE
J2EE
Servlet
HTTP
WebBrowser
124
Servlets
Session Tracking Mechanismen
• Cookies- Servlet Container sendet einen Cookie an den Client und der
Client sendet bei jedem nachfolgenden Request den Cookie mit• URL Rewriting
- Erweiterung des URL-Pfads um eine Session-ID, welche vom Servlet Container initial erstellt und bei nachfolgenden Requests ausgewertet wird
- Bsp. http://www.shop.com/index.html;jsessionid=1234• Secure Sockets Layer (SSL) Sessions
- Aufbau und Verfolgung einer Session innerhalb der SSL- Servlet Container nutzt diese Session zur Verfolgung der HTTP-
Requests
125
Servlets
Eigenschaften von Sessions
• Attribute- Zugriff von Servlets auf Attribute im Session-Kontext- Lesen und Schreiben von Attributen
• Timeouts- HTTP unterstützt keine Nachricht zum Beenden einer Session- Verwendung eines Timeouts zur Identifikation einer beendeten
Session- Timeout Period: Konfigurationsparameter des Servlet Containers
126
Servlets
Beispiel: Zugriff auf eine Session in der doGet-Methodepublic void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException{
PrintWriter out = resp.getWriter();
// Hole eine Referenz auf die aktuelle Session. Wenn die Session noch// nicht existiert, wird sie erstellt!HttpSession session = req.getSession(true);
if ( session.isNew() ) {out.println("<H1>Es wurde eine neue Session erstellt. Session ID: " + session.getId() + "</H1>");session.setAttribute("MySessionAttribute", "4711");
}else {
out.println("<H1>Es existiert bereits eine Session. Session ID: " + session.getId() + "</H1>");
}
}
127
Servlets
Beispiel: Zugriff auf Attribute in einer Sessionpublic void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException{
PrintWriter out = resp.getWriter();
// Hole eine Referenz auf die aktuelle Session. Wenn die Session noch// nicht existiert, liegt ein Fehler vor, da die Startseite noch nicht// besucht wurde!HttpSession session = req.getSession(true);if ( session.isNew() ) {
out.println("<H1>Sie müssen zunächst die <a href=" + resp.encodeURL("/vtbdv1/startsession") + ">Startseite</a> aufrufen!</H1>");
// Lösche die zuvor erstellte Session wiedersession.invalidate();
}else {
out.println("<H1>Sie befinden sich in der Session mit ID: " + session.getId() + "</H1><BR>");
out.println("<H1>Der Wert des Sessionattributs 'MySessionAttribute' : " + session.getAttribute("MySessionAttribute") + "</H1><BR>");
}}
128
Servlets
Literaturangaben
• [Sun04c] Sun Microsystems; Java Servlet Specification, Version 2.4, http://java.sun.com/products/servlet/download.html- Chapter SRV.1 Overview- Chapter SRV.2 The Servlet Interface- Chapter SRV.4 The Request- Chapter SRV.5 The Response- Chapter SRV.6 Filtering- Chapter SRV.7 Sessions- Chapter SRV.8 Dispatching Requests- Chapter SRV.11 Mapping Requests to Servlets
129
JavaServer Pages
Ziele der Vorlesungseinheit
• Verständnis des JavaServer Page-Konzepts• Verständnis der Elemente einer JavaServer Page
130
JavaServer Pages
Positionierung in der Softwarearchitektur
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Datenbank
APIs
APIs
APIs APIs
ApplicationClient
JSP Servlet EJB
Quelle: in Anlehnung an [Sun04a]
Komponente X nutzt Komponente Y
131
JavaServer Pages
• Text-basiertes Dokument, welches beschreibt wie dynamische Inhalte für einen Client bereitgestellt werden
• Enthält zwei Arten von Inhalten- statische Inhalte wie z.B.
HTML und XML- dynamische Inhalte,
welche mit sog. JSP Elementen erstellt werden
• Empfohlene Dateiendung- *.jsp
Begriffsdefinition: JavaServer Page (JSP)
WebContainer
J2SE
J2EE
JSP
HTTP
WebBrowser Request
Response
132
JavaServer Pages
• JavaServer Pages werden (spätestens) beim ersten Aufruf in Servlets übersetzt
• Alle folgende Requests führen lediglich zu einem Aufruf des Servlets
• JavaServer Pages Spezifikation basiert auf der Servlet Spezifikation- Steuerung und Verwaltung
der Servlets- HTTP-Request- und
-Response-Objekte- usw.
JavaServer Pages vs. Servlets
WebContainer
J2SE
J2EE
JSPHTTP
WebBrowser Request
ResponseServlet
133
JavaServer Pages
Beispiel: JavaServer Page<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML><HEAD><%@ page language="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<TITLE>Integration Engineering</TITLE></HEAD><BODY><H1>Teil 1: Verteilte Anwendungen auf der Basis von J2EE</H1><H2>Kapitel JavaServer Pages</H2><H3>Dynamische HTML-Seite auf der Basis einer JSP</H3><P>Das ist eine dynamische Seite!</P>
<% for (int i=0; i < 20; i++ ) {out.println("<P>Das ist die " + i + ". Ausgabe einer JavaServer Page!</P>");
}%>
</BODY></HTML>
134
JavaServer Pages
Begriffsdefinition: JSP Element
• Steuerung der Übersetzung in ein Servlet• Erstellung und Zugriff auf Objekte• Definition von Methoden und des Kontrollflusses• Zwei Syntaxen möglich
- Standard• Syntax an XML angelehnt, aber nicht „well-formed“
- XML• Zugriff und Validierung mit XML-Parser möglich
135
JavaServer Pages
JSP Elementtypen
• Directives- Anweisungen, welche bei der Übersetzung in ein Servlet durch
die JSP Engine verarbeitet werden• Scripting Elements
- Declarations• Deklaration von Variablen und Methoden innerhalb einer JSP-Seite
- Scriplets• Code-Fragmente, welche während der Verarbeitung des Requests
ausgeführt werden- Expressions
• Ausdrücke, welche in eine Zeichenkette konvertiert und (über den sog. JSP Writer) ausgegeben werden
• Actions- Erstellen, benutzen und/oder verändern Objekte
136
JavaServer Pages
Directives
• Erzeugen keine Ausgaben• Standard Syntax
- <%@ page page_directive_attr_list %>• XML-basierte Syntax
- <jsp:directive.page page_directive_attr_list />• Bsp. Standard Syntax
- <%@ page contentType=”text/html” %>- Konfiguration des MIME-Types in einer Response-Nachricht
137
JavaServer Pages
Scripting Elements - Declarations
• Deklaration von Variablen und Methoden, welche innerhalb der JSP-Seite verwendet werden
• Erzeugen keine Ausgaben• Standard Syntax
- <%! declaration(s) %>• XML-basierte Syntax
- <jsp:declaration> declaration </jsp:declaration>• Bsp. Standard Syntax
- <%! int i = 0; %>- Deklaration und Initialisierung der Variablen i
138
JavaServer Pages
Scripting Elements - Scriplets
• Code-Fragmente, welche während der Verarbeitung des Requests ausgeführt werden
• Scriplets können zuvor deklarierte Variablen modifizieren• Scriplets können Ausgaben generieren• Standard Syntax
- <% scriptlet %>• XML-basierte Syntax
- <jsp:scriptlet> code fragment </jsp:scriptlet>• Bsp. Standard Syntax
- <% i++; %>- Inkrement der Variablen i
139
JavaServer Pages
Scripting Elements - Expressions
• Ausdrücke, welche in eine Zeichenkette konvertiert und (über den sog. JSP Writer) ausgegeben werden
• Standard Syntax- <%= expression %>
• XML-basierte Syntax- <jsp:expression> expression </jsp:expression>
• Bsp. Standard Syntax- <%= (new java.util.Date()).toString() %>- Ausgabe des Datums als Zeichenkette
140
JavaServer Pages
Actions
• Erstellen, benutzen und verändern Objekte• Standard Actions
- in der Spezifikation vordefiniert• Custom Actions
- benutzerdefinierte Actions, welche über einen Erweiterungsmechanismus (sog. Tag Libraries) integriert werden
• Nur eine XML-basierte Syntax- <tag attr1=”attribute value”... >body</tag>
141
JavaServer Pages
Beispiel: Action <jsp:useBean>
• Zuweisung eines Objekts mit einer entsprechenden ID und innerhalb eines definierten Scopes
• Klasse des Objekts muss der JavaBean-Spezifikation entsprechen, d.h. eine JavaBean sein
• Flexible Semantik- Wenn das Objekt noch nicht unter der ID und im definierten
Scope existiert, wird es vor der Zuweisung erstellt• Syntax
- <jsp:useBean id="name" scope="page|request|session|application" typeSpec />
• Beispiel- <jsp:useBean id=”customer” class=”com.myco.Customer” />
142
JavaServer Pages
Beispiel: JavaServer Page mit JSP Elementen (1/2)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="cust" class="com.softec.vtbdv1.beans.Customer"scope="session"><jsp:setProperty name="cust" property="surname" value="Müller"/><jsp:setProperty name="cust" property="firstname" value="Karl-Heinz"/>
</jsp:useBean>
<HTML><HEAD>
<%-- Directives --%><%@ page language="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"session="true"%>
<TITLE>Integration Engineering</TITLE></HEAD>
143
JavaServer Pages
Beispiel: JavaServer Page mit JSP Elementen (2/2)<BODY><H1>Teil 1: Verteilte Anwendungen auf der Basis von J2EE</H1><H2>Kapitel JavaServer Pages</H2><H3>JSP Elementtypen - Beispiele</H3>
<%-- Declarations --%><%! int i = 1; String str = new String("Zeichenkette"); %>
<%-- Scriplets --%><% for (; i < 5; i++) {
out.println("Zeile Nummer: " + i + "<BR><BR>"); } %><% out.println("Der Wert der Variablen 'str' ist: " + str + "<BR><BR>"); %>
<%-- Expressions --%><%= (new java.util.Date()).toString() %><BR><BR>
<%= cust.getSurname() + ", " + cust.getFirstname() %></BODY></HTML>
144
JavaServer Pages
Literaturangaben
• [Sun04c] Sun Microsystems; Java Servlet Specification, Version 2.4, http://java.sun.com/products/servlet/download.html - Chapter JSP.1 Core Syntax and Semantics
145
Enterprise JavaBeans
Ziele der Vorlesungseinheit
• Verständnis der Eigenschaften, Lebenszyklen und Nutzung der unterschiedlichen EJB-Typen
• Verständnis der Dienste des EJB-Containers• Verständnis der Verteilungsaspekte und Schnittstellentypen
der unterschiedlichen EJB-Typen• Verständnis und Bewertung der verschiedenen
Entwurfsaspekte• Verständnis und Bewertung der Schnittstellen- und EJB-
Typen
146
Enterprise JavaBeans
Positionierung in der Softwarearchitektur
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Datenbank
APIs
APIs
APIs APIs
ApplicationClient
JSP Servlet EJB
Quelle: in Anlehnung an [Sun04a]
Komponente X nutzt Komponente Y
147
Enterprise JavaBeans
• Server-seitige Architektur zur Entwicklung von komponenten-basierten und verteilten Anwendungen
• Ausführung innerhalb eines Enterprise JavaBean (EJB) Containers
• Aufruf durch verschiedene potenzielle Clients wie z.B.- Applet Container- Application Client Container- Web Container- EJB Container
Begriffsdefinition: Enterprise JavaBean
Enterprise JavaBeanContainer
J2SE
J2EE
EJBClient Methoden-
aufruf
Methoden-ergebnis
148
Enterprise JavaBeans
• Laufzeitumgebung für EJBs• Steuerung und Verwaltung
der EJBs- dynamisches Laden und
Instanziieren von EJBs- Management des
Lebenszyklus von EJBs• Bereitstellung von Diensten
wie z.B.- Kapselung der
Kommunikation mit Clients- Transaktionen- Persistenz
Begriffsdefinition: Enterprise JavaBean Container
Enterprise JavaBeanContainer
J2SE
J2EE
EJBClient Methoden-
aufruf
Methoden-ergebnis
149
Enterprise JavaBeans
• EJBs enthalten i.d.R. die Geschäftslogik einer Anwendung
• Konfiguration zum Zeitpunkt der Installation im Container
• Zugriff der Clients wird durch den Container vermittelt
• Zwei wesentliche Schnittstellen- zwischen Client und
Container- zwischen EJB und
Container
Eigenschaften der Enterprise JavaBeans
Enterprise JavaBeanContainer
J2SE
J2EE
EJBClient
Component ContractClie
nt V
iew
150
Enterprise JavaBeans
IIOP
Clients der EJBs
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Database
J2SE
J2SE
J2SE J2SE
J2EE J2EE
J2EE
ApplicationClient
JSP Servlet
Quelle: in Anlehnung an [Sun04a] und [Sun04b]
JRMP HTTP(S) JRMPIIOP HTTP(S)
SOAP/HTTP JRMPIIOP HTTP(S)
SOAP/HTTP
JRMPIIOP HTTP(S)
SOAP/HTTP
Client Server
EJB EJB
151
Enterprise JavaBeans
Verteilung der Clients
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Database
J2SE
J2SE
J2SE J2SE
J2EE J2EE
J2EE
ApplicationClient
JSP Servlet
Quelle: in Anlehnung an [Sun04a] und [Sun04b]
Client Server
EJB EJB
JVM
JVM
JVM JVM
152
J2EE Server
JVM
Enterprise JavaBeans
J2EE Server mit Web und EJB Container
Client Server
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Database
J2SE
J2SE
J2SE
J2EE
J2EE
ApplicationClient
JSP Servlet EJB EJB
JVM
JVM
153
Enterprise JavaBeans
Java Remote InterfaceJava InterfaceTyp der Schnittstelle
Pass by ValuePass by ReferenceMethodenparameter und -ergebnis
in einer anderen JVM (auf dem identischen oder einem anderen Rechner)
in der identischen JVMOrt der EJB
jaNeinOrtstransparenzRemote ClientLocal ClientKriterium
Local vs. Remote Clients
154
Enterprise JavaBeans
Aspekte des Entwurfs
• Flexibilität der Verteilung- Entfernte Schnittstellen ermöglichen Ortstransparenz und
unterstützen somit auch Local Clients• Effizienz der Methodenaufrufe
- Entfernte Methodenaufrufe sind „teuer“ (Marshalling, Latenzzeit, Kopieren von Methodenparametern und Ergebnissen, usw.)
• Isolation der Objekte- Keine Seiteneffekte durch Manipulation von gemeinsam
genutzten Objekten (Entkopplung von Client und EJB)• Umfang der Fehlerbehandlung
- Netzwerkkommunikation als zusätzliche Fehlerquelle
Quelle: in Anlehnung an [Sun04b]
155
Enterprise JavaBeans
Granularität der EJBs
Enterprise JavaBeanContainer
J2SE
J2EE
EJB 1
Client Methoden-aufruf
Methoden-ergebnis
EJB 2
EJB 4
EJB 3
Database
12
3
4
SessionFacadePatternvgl. [AlCM03]
1 Remote Interface2 Local Interface3 4
156
Enterprise JavaBeans
• Local und Remote Client View umfassen- Home Interface- Component Interface
• Remote Client View enthält zusätzlich- Metadata Interface
Schnittstellen zwischen Client und Container
Enterprise JavaBeanContainer
J2SE
J2EE
EJBClient
Cie
nt V
iew
Component Contract
157
Enterprise JavaBeans
Home Interface
• Definition von Methoden zum Erstellen, Löschen und Auffinden von EJBs eines Typs
• Definition von Methoden, welche nicht an eine spezielle EJB-Instanz gebunden sind
• Spezifikation der Schnittstelle durch den EJB-Entwickler- Container generiert eine Klasse / Klassen, welche die
Schnittstelle implementiert / implementieren• Typ des Client Views bestimmt von welcher Schnittstelle das
Home Interface abgeleitet werden muss- Remote Client View: javax.ejb.EJBHome- Local Client View: javax.ejb.EJBLocalHome
158
Enterprise JavaBeans
Component Interface
• Definition von Methoden, welche die Geschäftslogik implementieren und vom Client aufgerufen werden können
• Spezifikation der Schnittstelle durch den EJB-Entwickler- Container generiert eine Klasse / Klassen, welche die
Schnittstelle implementiert / implementieren• Typ des Client Views bestimmt von welcher Schnittstelle das
Component Interface abgeleitet werden muss- Remote Client View: javax.ejb.EJBObject- Local Client View: javax.ejb.EJBLocalObject
159
Enterprise JavaBeans
Metadata Interface
• Definition von Methoden zur Abfrage von Metadaten einer EJB- Metadaten bezüglich des Home und Component Interface
• Nutzung der Metadaten durch- Werkzeuge, die bereits im Container installierte EJBs
analysieren und nutzen- Clients, die eine Scripting Language verwenden („dynamischer“
Aufruf von EJBs)- Interface: javax.ejb.EJBMetaData
160
Enterprise JavaBeans
Object Broker Pattern (Wiederholung)
Rechner 2(Server)
Rechner 1(Client)
Objekt A Objekt B
Server-Proxy
Object RequestBroker
Client-Proxy
Object RequestBroker
Methoden-
aufruf
Request Reply
Methoden-
ergebnis
Reply Request
Methoden-
aufruf
Methoden-
ergebnis
RPC
161
Enterprise JavaBeans
Nutzung einer entfernten EJB (1/2)Enterprise JavaBean
Container
J2SE
J2EE
Client
BeanObject
implements javax.ejb.<Typ der Bean>
JVM
J2SE
J2EE
JVM
ClientObject
EJBHome Objectimplements
Home Interface
EJBHome Object Proxy
implements Home Interface
EJBObjectProxy
implementsComponent Interface
EJBObjectimplements
Component Interface
JNDI
lookup( <JNDI-Name> )
create() RMI create()
RMIbusinessMethod() businessMethod()
1
2 3
4
5
162
Enterprise JavaBeans
• Ermittlung des Objektes, welches das Remote Home Interface implementiert- JNDI wird als
Objektspeicher verwendet- Type Cast erfolgt über
statische Methode narrow(), um CORBA-Kompatibilität zu erhalten
• Erstellung und Nutzung der EJB-Instanz
Nutzung einer entfernten EJB (2/2)// Initialisierung des Kontextes für die // folgende JNDI-OperationContext initialContext = new InitialContext();
// Ermittlung des ObjektesObject object = initialContext.lookup( "ejb/com/softec/vtbdv1/CustomerFacadeHome");
// Type Cast des Objektes auf Remote Home // InterfaceCustomerFacadeHome facadeHome = (CustomerFacadeHome)javax.rmi.PortableRemoteObject.narrow( object, CustomerFacadeHome.class );
// Erstellung der EJB-InstanzCustomerFacade facade = facadeHome.create();
// Aufruf der Methode (Geschäftslogik)int i = facade.getNumOfOpenOrders( customerID );
163
Enterprise JavaBeans
Nutzung einer lokalen EJB (1/2)Enterprise JavaBean
Container
J2SE
J2EE
BeanObject
implements javax.ejb.<Typ der Bean>
JVM
ClientObject
EJBLocalHome Object
implementsHome Interface
EJBLocalObjectimplements
Component Interface
JDNI
lookup( <JNDI-Name> )
create() create()
businessMethod() businessMethod()
1
2 3
5
4
164
Enterprise JavaBeans
• Ermittlung des Objektes, welches das Local Home Interface des Objektes implementiert- JNDI wird als
Objektspeicher verwendet- Type Cast auf der Basis
des standard Java-Mechanismus
• Erstellung und Nutzung der EJB-Instanz
Nutzung einer lokalen EJB (2/2)// Initialisierung des Kontextes für die // folgende JNDI-OperationContext initialContext = new InitialContext();
// Ermittlung des Objektes und Java Type CastOrderListLocalHome orderListLocalHome = (OrderListLocalHome)initialContext.lookup("local:ejb/com/softec/vtbdv1/OrderListLocalHome");
// Erstellung der EJB-InstanzOrderListLocal orderList = orderListLocalHome.create();
// Aufruf der Methode (Geschäftslogik)int i = orderList.getNumOfOrders( customerID , OPEN_ORDERS );
165
Enterprise JavaBeans
Erstellung vs. Generierung von Klassen und InterfacesEnterprise JavaBean
ContainerClient
BeanClass
ClientClass
Home Interface
extents javax.ejb.EJBHome
ComponentInterface
extents javax.ejb.EJBObject
EJBHome Class
EJBHome Proxy Class
EJBObjectProxy Class
EJBObjectClass
implements implements
implements implements
javax.ejb.<Typ der
Bean>
implements
Erstellung durch Entwickler
Generierung durch Werkzeug
Teil des J2EE APIs
166
Enterprise JavaBeans
• Vertrag zwischen einer EJB und dem Container, welcher aus zwei Schnittstellen besteht- Methoden, welche die
Geschäftslogik implementieren (vgl. Component Interface)
- Callback-Methoden, welche vom Typ der EJBabhängig sind
• Implementation der Schnittstellen erfolgt durch die sog. Bean Class
Schnittstellen zwischen EJB und Container
Enterprise JavaBeanContainer
J2SE
J2EE
EJBClient
Cie
nt V
iew
Component Contract
167
Enterprise JavaBeans
Typen von Enterprise JavaBeans - Überblick
• Session Beans- implementieren Funktionen, welche i.d.R. von einem Client
innerhalb eines Geschäftsprozesses aufgerufen werden- kurzlebig
• Entity Beans- objekt-orientierte Sicht auf Daten in einer Datenbank- langlebig
• Message-driven Beans- implementieren Funktionen, welche asynchron beim Eintreffen
einer Client Message ausgeführt werden- kurzlebig
168
Enterprise JavaBeans
• Implementation von Funktionen, die von einem Client aufgerufen werden
• Funktionen können im Kontext einer Transaktionausgeführt werden- EJB Container verwaltet
und steuert die Transaktionen (Dienst)
• Zwei Subtypen von Session Beans - stateless- stateful
Eigenschaften von Session Beans
Enterprise JavaBeanContainer
J2SE
J2EE
EJBClient
Cie
nt V
iew
javax.ejb.SessionBean
169
Enterprise JavaBeans
• Verwaltung des Lebenszyklus erfolgt durch den Container- Container ruft die Callback-
Methoden der Schnittstelle javax.ejb.SessionBean auf
• Keine Zuweisung zu einem bestimmten Client- Wiederverwendung von
Instanzen ist möglich• Keine Speicherung von
Zustandsinformationen- Effizienter
Speicherverbrauch
Lebenszyklus von Stateless Session Beans
does not exist method ready
1. Class.newInstance()2. setSessionContext()3. ejbCreate()
ejbRemove()
Quelle: in Anlehnung an [Sun04b]
170
Enterprise JavaBeans
• Verwaltung des Lebenszyklus erfolgt durch Client und Container- Container ruft die Callback-
Methoden der Schnittstelle javax.ejb.SessionBean auf
• Stateful Session Beans können in den Zustand „passive“ übergehen- Serialisierung des
Zustands der Bean auf einen Sekundärspeicher
- Freigabe des Speicherbereichs der Bean
Lebenszyklus von Stateful Session Beans
does not exist method ready
1. Class.newInstance()2. setSessionContext()3. ejbCreate<Method>()
ejbRemove()
passive
ejbP
assi
vate
()
ejbA
ctiv
ate(
)
Quelle: in Anlehnung an [Sun04b]
171
Database Management
System (DBMS)
Enterprise JavaBeans
• Objekt-orientierte Sicht auf Datenstrukturen in einer Datenbank- Primär: relationale
Datenbanken• Sicht des Clients: für jede
Entität in der Datenbank existiert ein Entity Objekt
• Mehrere Clients können gleichzeitig auf ein Entity Objekt zugreifen- Container synchronisiert
den Zugriff mit Hilfe von Transaktionen
Eigenschaften von Entity Beans
Enterprise JavaBeanContainer
J2SE
J2EE
EJB
javax.ejb.EntityBean Database
172
Enterprise JavaBeans
• Verwaltung des Lebenszyklus erfolgt durch Container- Container ruft die Callback-
Methoden der Schnittstelle javax.ejb.EntityBean auf
• Zustand „pooled“- keine aktuelle Assoziation
mit einem Datensatz in der Datenbank
- es wurden keine Daten geladen („leere Instanz“)
Lebenszyklus von Entity Beans
does not exist
pooled
ready
1. Class.newInstance()2. setSessionContext()
ejbCreate<Method>() ejbRemove()
Object.finalize()
Quelle: in Anlehnung an [Sun04b]
ejbActivate()ejbPassivate()
ejbStore()ejbLoad()
173
Enterprise JavaBeans
Finder Methods (1/2)Enterprise JavaBean
Container
J2SE
J2EE
Client
BeanObject
implements javax.ejb.<Typ der Bean>
JVM
J2SE
J2EE
JVM
ClientObject
EJBHome Objectimplements
Home Interface
EJBHome Object Proxy
implements Home Interface
EJBObjectProxy
implementsComponent Interface
EJBObjectimplements
Component Interface
JNDI
lookup( <JNDI-Name> )
create() RMI create()
RMIbusinessMethod() businessMethod()
1
2 3
4
5
findByPrimary(<Primary Key Class>) findByPrimary(<Primary Key Class>)
174
Enterprise JavaBeans
Finder Methods (2/2)
• Bestandteil des Home Interfaces einer Entity Bean- jede Methode definiert einen Weg um ein Entity Objekt oder eine
Menge von Entity-Objekten zu finden• Methodennamen beginnen mit dem Prefix „find“• Verwendung der Methodenargumente bei der Suche
- Abfragen werden deklarativ auf Basis der sog. EJB Query Language im Deployment Descriptor definiert
• Ergebnis ist das EJBObject oder eine Menge der EJBObjects in einer Collection- Collection findByName( String name )- EJB QL: SELECT object(o) FROM CustomerCMP o WHERE
o.name = ?1 • Verbindlich ist die Finder Method findByPrimaryKey()
- <Component Interface> findByPrimary( <Primary Key Class> )
175
Enterprise JavaBeans
Container-Managed Persistence (CMP) Entity Bean
• Entwickler beschreibt persistente Attribute der Bean• Werkzeuge generieren zum Installationszeitpunkt den Code
- Lese-, Speicher- und Löschoperationen auf den Daten in der Datenbank
• Unterschiedliche relationale DBMS können bei Generierung berücksichtigt werden- Beachte: unterschiedliche Dialekte und Erweiterungen des SQL
Standards
176
Enterprise JavaBeans
Bean-Managed Persistence (BMP) Entity Bean
• Entwickler ist für die Definition der persistenten Attribute und des Codes verantwortlich- Implementierung von Code zum Lesen, Speichern und Löschen
von Daten in der Datenbank- Schnittstelle zwischen Container und DBMS basiert i.d.R. auf
SQL• Unterschiedliche DBMS müssen vom Entwickler
berücksichtigt werden- auch nicht-relationale DBMS können verwendet werden
(hierarchisch, XML-basiert)
177
Enterprise JavaBeans
• Konsument einer asynchronen Nachricht, welche zum Aufruf der Message-Driven Bean führt
• Nutzung durch den Client erfolgt durch das Versenden einer Nachricht an einen sog. Messaging Destination- Keine Implementation des
Home, Component oder Metadata Interfaces
Eigenschaften von Message-Driven Beans
Client
Enterprise JavaBeanContainer
J2SE
J2EE
EJB
javax.ejb.MessageDrivenBean
MessagingProvider
178
Zeit
Enterprise JavaBeans
Transaktionen
Enterprise JavaBeanContainer
EJB 1
Client Methoden-aufruf
Methoden-ergebnis
EJB 2
EJB 5
EJB 3
Database
23
4
5
2 EJB 1: executeOrder()
3 EJB 2: calculateInvoice()
4 EJB 3: createInvoice()
5 EJB 4: calculateActualStock()
6 EJB 5: updateStock()
EJB 46
J2SE
J2EE
1
7
1 Container: beginTransaction()
7 EJB Container: EndTransaction()
179
Enterprise JavaBeans
Literaturangaben
• [Sun04b] Sun Microsystems; Enterprise JavaBeans Specification, Version 2.1- Chapter 4 Overview- Chapter 5 Local, Remote, and Web Service Client Views- Chapter 6 Client View of a Session Bean- Chapter 7 Session Bean Component Contract- Chapter 9 Client View of an Entity- Chapter 10 Entity Bean Component Contract for Container-
Managed Persistence- Chapter 12 Entity Bean Component Contract for Bean-Managed
Persistence- Chapter 14 Message-Driven Bean Component Contract- Chapter 17 Support for Transactions- Chapter 19 Support for Distribution and Interoperability
180
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
181
Aspekte der Verteilung von J2EE-Anwendungen
Ziele der Vorlesungseinheit
• Verständnis der Konfigurationskriterien einer mehr-schichtigen, verteilten Anwendung
• Verständnis der grundlegenden Elemente und Konzepte von Konfigurationstopologien
• Verständnis und Bewertung der vorgestellen Konfigurationen
182
Aspekte der Verteilung von J2EE-Anwendungen
Einflussfaktoren auf eine Softwarearchitektur nach Balzert
Quelle: in Anlehnung an [Balz96]
Umgebungs- und Randbedingungen
• Gegebene Plattform-Architektur (z.B. Mainframe)
Einsatzbedingungen• sequenziell• nicht sequenziell (nebenläufig,
verteilt, Echtzeit, parallel)
Softwarearchitektur
Nicht funktionaleProduktanforderungen
• Änderbarkeit, Effizienz, Zuverlässigkeit
Nicht funktionaleQualitätsanforderungen
• Skalierbarkeit, Wieder-verwendbarkeit, Reaktions-zeit
183
Aspekte der Verteilung von J2EE-Anwendungen
Verteilung des Web und EJB Containers
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Datenbank
APIs
APIs
APIs APIs
ApplicationClient
JSP Servlet EJB
Quelle: in Anlehnung an [Sun04a]
184
J2EE Server
JVM
Aspekte der Verteilung von J2EE-Anwendungen
Konfiguration der J2EE Server und Container
Applet Container WebContainer
Enterprise JavaBeanContainer
Applet
Application ClientContainer
Database
J2SE
J2SE
J2SE
J2EE
J2EE
ApplicationClient
JSP Servlet EJB
JVM
JVM
185
Aspekte der Verteilung von J2EE-Anwendungen
Kriterien der Konfiguration (1/3)
• Sicherheit- Trennung des Web Servers vom Applikationsserver durch eine
oder mehrere Firewalls• Screening Router (Protocol Firewall)• Application Gateway (Domain Firewall)
• Geschwindigkeit- Antwortzeit für eine Transaktion unter Berücksichtigung einer
bestimmten Last• Durchsatz
- Anzahl der ausgeführten Transaktionen pro Zeiteinheit innerhalb eines bestimmten Zeitraums
Quelle: vgl. [ABBC04] und [SCHI04]
186
Aspekte der Verteilung von J2EE-Anwendungen
Kriterien der Konfiguration (2/3)
• Skalierbarkeit- Erweiterung einer Konfiguration durch Hinzufügen von
Rechnerkapazität• Hard- und Softwareelemente
- Vertikale Skalierung• zusätzliche Prozesse, identischer Rechnerknoten• ermöglicht Ausfallsicherheit bezüglich der relevanten
Softwareelemente (z.B. Betriebssystem) und des/der Serverprozesses/Serverprozesse
- Horizontale Skalierung• zusätzliche Prozesse auf unterschiedlichen Rechnerknoten• ermöglicht zusätzlich Ausfallsicherheit bezüglich der relevanten
Hardwareelemente
Quelle: vgl. [ABBC04] und [SCHI04]
187
Aspekte der Verteilung von J2EE-Anwendungen
Kriterien der Konfiguration (3/3)
• Verfügbarkeit- Wahrscheinlichkeit, dass die Funktionen einer Anwendung
nutzbar sind, wenn sie benötigt werden• Betriebszeit (Operating Time) vs. Stillstandzeit (Downtime)• Failure vs. Fault
- Maßnahme: durch Redundanz kann sog. Single Point of Failurevermieden werden
• Wartbarkeit- Aktualisierung von Hard- und Softwareelementen
• Ist abhängig von der Verfügbarkeit
Quelle: vgl. [ABBC04] und [SCHI04]
188
Aspekte der Verteilung von J2EE-Anwendungen
• Anbieter eines J2EE-kompatiblen Produkts implementieren entsprechende Werkzeuge und auch weiterführende Funktionen
• Anlehnung der Begriffe und Konfigurationsbeispiele an das ausgewählte Produkt- aber: die Begriffe und
Konzepte sind i.d.R. auf andere Produkte übertragbar!
Konfiguration am Beispiel des WebSphere Application Server
Java 2 Platform, Enterprise Edition
Specification
CompatibilityTest Suite Blue Prints
Reference Implementation
J2EE
189
Aspekte der Verteilung von J2EE-Anwendungen
Begriffsdefinitionen: Server und Node
• Server- J2EE-kompatibler Server
• auch: J2EE Server genannt
- Laufzeitumgebung mit Web und/oder EJB Container
- Ausführung in eigener JVM• Node
- eine Installation eines Servers einschließlich der relevanten Konfigurations-daten
Node
J2EE Server
JVM
WebContainer
Enterprise JavaBeanContainer
Konfigurations-daten
Quelle: in Anlehnung an [SCHI04]
190
Cluster
Cell
Aspekte der Verteilung von J2EE-Anwendungen
Begriffsdefinitionen: Cell und Cluster
• Cluster- logische Gruppierung von
Cells zur Lastverteilung- kann eine oder mehrere
Cells umfassen
• Cell- logische Gruppierung von
mehreren Nodes zu einer administrativen Einheit
- unterschiedliche Cells können unterschiedliche Versionen des J2EE Servers und der Anwendung enthalten
Node
J2EE Server
JVM
WebContainer
Enterprise JavaBeanContainer
Konfigurations-datenNode
J2EE Server
JVM
WebContainer
Enterprise JavaBeanContainer
Quelle: in Anlehnung an [SCHI04]
191
Cluster
Aspekte der Verteilung von J2EE-Anwendungen
• Auch: Load Balancing oder Workload Management
• Basiert auf Konfiguration eines Clusters
• Beispiel: Routing des HTTP-Requests- Anzahl der Cluster Member- Gewichtung des Member- % routed to Server_1 =
weight_1 / (weight_1 + weight_2 + ... + weight_n)
- Verfügbarkeit eines Cluster Members wird berücksichtigt
Verteilung der Last
WebBrowser
HTT
P Se
rver
WebContainer
J2SE
J2EE
Servlet
WebContainer
J2SE
J2EE
Servlet
?
HTTP(S)
HTTP(S)Pl
ug-In
Quelle: in Anlehnung an [SCHI04]
192
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Vertikale Skalierung mit Cluster (1/2)
Database Server
Database
Quelle: in Anlehnung an [SCHI04]
Prot
ocol
Fire
wal
l
Inte
rnet
Application ServerNode
Cluster
Web und EJBContainer(J2EE Server)
Web und EJBContainer(J2EE Server)
Web und EJBContainer(J2EE Server)
Web und EJBContainer(J2EE Server)
Web ServerRedirector Node
HTTPServer
Plug-inD
omai
n Fi
rew
all
193
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Vertikale Skalierung mit Cluster (2/2)
• Mehrere Nodes werden auf einem Rechnerknoten zu einem Cluster zusammengefasst
• Jeder Node enthält die gleiche(n) Anwendung(en)• Vorteile
- Effiziente Nutzung der Rechnerkapazität- Lastverteilung innerhalb des Clusters- Ausfallsicherheit bezüglich der JVM-Prozesse
• Nachteile- Application Server Node ist Single Point of Failure- Web Server Redirector Node ist Single Point of Failure
194
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Horizontale Skalierung mit Cluster (1/2)
Database Server
Database
Quelle: in Anlehnung an [SCHI04]
Prot
ocol
Fire
wal
l
Inte
rnet
Application ServerNode
Application ServerNode
Cluster
Web und EJBContainer(J2EE Server)
Web und EJBContainer(J2EE Server)
Web und EJBContainer(J2EE Server)
Web und EJBContainer(J2EE Server)
Web ServerRedirector Node
HTTPServer
Plug-inD
omai
n Fi
rew
all
195
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Horizontale Skalierung mit Cluster (2/2)
• Cluster Member sind auf mehrere Rechnerknoten verteilt• Vorteile
- Ausfallsicherheit bezüglich der JVM-Prozesse und der Hardware- Lastverteilung innerhalb des Clusters (über mehrere
Rechnerknoten)• Nachteile
- Zusätzliche Hardware- Erhöhter Administrationsaufwand durch zusätzliche
Rechnerknoten- Web Server Redirector Node ist Single Point of Failure
196
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Horizontale Skalierung mit IP Sprayer (1/2)
Database Server
Database
Quelle: in Anlehnung an [SCHI04]
Presentation ServerNode
WebContainer(J2EE Server)
HTTPServer
Plug-in
Presentation ServerNode
WebContainer(J2EE Server)
HTTPServer
Plug-in
Presentation ServerNode
WebContainer(J2EE Server)
HTTPServer
Plug-in
Presentation ServerNode
WebContainer(J2EE Server)
HTTPServer
Plug-in
Prot
ocol
Fire
wal
l
Inte
rnet
Cluster
Application ServerNode
EJBContainer(J2EE Server)
Application ServerNode
EJBContainer(J2EE Server)
Load BalancerBackup
Dom
ain
Fire
wal
lLoad Balancer
NodeIP
Sprayer
IPSprayer
197
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Horizontale Skalierung mit IP Sprayer (2/2)
• IP Sprayer auf dem Load Balancer Node verteilt die HTTP(S)-Requests auf verschiedene Presentation Server Nodes- Load Balancer Backup Node eleminiert den IP Sprayer als
Single Point of Failure• Presentation Server Nodes bilden keinen Cluster
- Web Container erhält einen Request immer vom Web Server Plug-in des identischen Nodes
- aber: Zusammenfassung in Cluster ist auch möglich• Application Server Nodes bilden einen Cluster
- Cluster erscheint als ein logischer J2EE-Server mit EJB Container, welche u.a. die Datenbankzugriffe kapselt
198
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Horizontale Skalierung mit IP Sprayer (2/2)
• Vorteile- Erhöhte Web Server Geschwindigkeit durch die Lastverteilung
auf mehrere Web Server- Erhöhter Durchsatz: mehrere Rechnerknoten verarbeiten die
Client Requests- Kein Single Point of Failure
• Beachte: Datenbank Server wird nicht betrachtet• Presentation Server Nodes sollten auf mehrere Rechnerknoten
verteilt werden
• Nachteile- Zusätzliche Hardware (insbesondere Load Balance Nodes)- Erhöhter Administrationsaufwand durch zusätzliche
Rechnerknoten
199
Cluster
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Mehrfache Zellen (1/2)
Database Server
Database
Quelle: in Anlehnung an [SCHI04]
Prot
ocol
Fire
wal
l
Inte
rnet
Cell 1Web Application Server
Node
WebContainer
HTTPServer
Plug-in
EJBContainer
Cell 2Web Application Server
Node
WebContainer
HTTPServer
Plug-in
EJBContainer
Dom
ain
Fire
wal
lLoad Balancer
NodeIP
Sprayer
Load BalancerBackup
IPSprayer
200
Aspekte der Verteilung von J2EE-Anwendungen
Beispiel: Mehrfache Zellen (2/2)
• Jede Zelle ist eine administrative Einheit und enthält genau eine Version der Anwendung und des J2EE Servers
• IP Sprayer arbeitet auf der Ebene der Zellen• Vorteile
- Isolation von Softwarefehlern insbesondere bei der Installation von
• neuen Versionen der Anwendung• neuen Versionen des J2EE Servers• Fixes und Patches
- Erhöhte Geschwindigkeit, da keine Kommunikation zwischen den Prozessen von unterschiedlichen Zellen
• Nachteile- Erhöhter Administrationsaufwand, da jede Zelle eine eigene
administrative Einheit ist
201
Aspekte der Verteilung von J2EE-Anwendungen
Literaturangaben
• [SCHI04] Sadler, Carla; Clifford, Lee; Heyward, Jeff; Iwamoto, Arihiro; Jakusz, Noelle; Laursen, Lars Bek; Lee, WonYoung; Mauny, Isabell; Rabbi, Shafkat; Sanchez, Ascension; IBM WebSphere Application Server V5.1 System Management and Configuration; WebSphere Handbook Series; 2004; http://www.redbooks.ibm.com/abstracts/sg246195.html?Open- Chapter 2. IBM WebSphere Application Server architecture- Chapter 3. Topology selection
202
Zusammenfassung und Ausblick
Agenda
Einführung und Motivation
Verteilte Objekte und Komponenten
Verteilte Softwarearchitekturen
J2EE-Plattform
J2EE-basierte Softwarearchitektur
Aspekte der Verteilung von J2EE-Anwendungen
203
Zusammenfassung und Ausblick
Rollen in einer Projektorganisation
Projektmanagement
Anwendungs-entwicklung AnwendungstestAnforderungs-
management Technische Architektur
TesterDesignerAnalyst Softwarearchitekt
Entwickler
Projektmanager
204
Literaturverzeichnis
Verwendete Literatur und Quellen (1/4)
• [AlCM03] Alur, D.; Crupi, J.; Malks, D.; Core J2EE Patterns - Best Practices and Design Strategies, Second Edition; Prentice Hall; New York; 2003
• [ABBC04] Armstrong, Eric; Ball, Jennifer; Bodoff, Stephanie;Carson, Debbie Bode; Evans, Ian; Green, Dale; Haase, Kim; Jendrock, Eric Carson, Debbie Bode; Evans, Ian; Green, Dale; Haase, Kim; Jendrock, Eric; The J2EE Tutorial v1.4; Sun Microsystems; 2004; http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html
• [Balz96] Balzert, Helmut; Lehrbuch der Software-Technik: Software-Entwicklung; Spektrum Akademischer Verlag; Heidelberg, Berlin, Oxford; 1996
205
Literaturverzeichnis
Verwendete Literatur und Quellen (2/4)
• [BaCK03] Bass, Len; Clements, Paul; Kazman, Rick; Software Architecture in Practice; 2. Auflage; Addision-Wesley; Boston; 2003
• [Kruc95] Kruchten, Philippe; Architectural Blueprints—The"4+1" View Model of Software Architecture; In,IEEE Software; Vol. 12 No. 6; November 1995;pp. 42-50
• [Rati03] Rational; The Rational Unified Process; Version2003.06.13; http://www.ibm.com/developerworks/rational/products/rup/
206
Literaturverzeichnis
Verwendete Literatur und Quellen (3/4)
• [SCHI04] Sadler, Carla; Clifford, Lee; Heyward, Jeff;Iwamoto, Arihiro; Jakusz, Noelle; Laursen, Lars Bek; Lee, WonYoung; Mauny, Isabell; Rabbi, Shafkat; Sanchez, Ascension; IBM WebSphere Application Server V5.1 System Management and Configuration; WebSphere Handbook Series; 2004; http://www.redbooks.ibm.com/abstracts/sg246195.html?Open
• [Sun04a] Sun Microsystems; Java 2 Platform, Enterprise Edition (J2EE) Specification, v1.4; http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf
• [Sun04b] Sun Microsystems; Enterprise JavaBeans Specification, Version 2.1;http://java.sun.com/products/ejb/docs.html
207
Literaturverzeichnis
Verwendete Literatur und Quellen (4/4)
• [Sun04c] Sun Microsystems; Java Servlet Specification, Version 2.4;http://java.sun.com/products/servlet/download.html
• [Sun04d] Sun Microsystems; JavaServer Pages Specification, Version 2.0;http://java.sun.com/products/jsp/reference/api/index.html