Teil 3 - Programmierung und Softwaretechnik (PST)

Werbung
Rolle von Java
Verteilte Verarbeitung mit Java
J2EE Übersicht
J2EE Details
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 142
Entwicklung von Java
•
•
•
•
•
•
•
•
1990: Team bei Sun Microsystems (James Gosling) entwickelt neu OOSprache, insbesondere für Embedded Systems
1994: Erkenntnis, dass Sprache für Web-Anwendungen geeignet ist
– Kompakter Code
– Interpreter Konzept
– Plattform-unabhängig
1995: Namensgebung Java; Vorstellung der Sprache
1996: Große Akzeptanz für Programmierung im Internet
1997: JDK 1.1; Unterstützung durch viele vorgefertigte Klassen
1998: JDK 1.2
– Java IDL und RMI
– Swing (GUI Bibliothek)
Gegenwärtige Version: 1.3.1 (Bestandteil von J2SE)
J2SE (mit SDK) 1.4 im Beta 3 (seit 11/01; Release in Q1/2002)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 143
Rolle von Java
•
•
Java: Portable objekt-orientierte Programmierumgebung
–
–
–
–
Programmiersprache (an C++ angelehnt)
Compiler (erzeugt Bytecode)
Java Virtual Machine (JVM): interpretiert Bytecode
JIT (Just in Time) Compiler übersetzt Bytecode in Maschinencode
Java ist die Sprache des Internet
– Konzept Interpreter (JVM) mit Bytecode ideal für verteilte Systeme
• Der gleiche Code kann in allen Stufen benutzt werden
• Write Once Run Anywhere (WORA)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 144
Java Entwicklung und Ausführung
Java
SourceCodes
oder über das Netz
Laden vom Filesystem
Java
Compiler
Class
Loader
ByteCode
Verifier
Just in Time
Compiler
Java
ByteCodes
Java Developers Kit
IDE´s
IDE: Integrated Development Environment
z.B. JBuilder von Borland
Architekturen von Web-Anwendungen, LMU, WS-01/02
Java
Virtual Machine
Binary
Code
Java Platform
Folie 145
Java Plattformen
•
•
•
•
Java 2 Platform, Standard Edition (J2SE)
– Standard Java Konfiguration
– Enthält alle Kern-Klassen
– Enthält JDK
Java 2 Platform, Enterprise Edition (J2EE)
– Enthält J2SE
– Zusätzliche API´s und Services für unternehmens-kritische Anwendungen
(z.B. Transaktionen, Komponentenmodell EJB)
PersonalJava
– Teilmenge von J2SE
Java Card
– Teilmenge von PersonalJava
– Bestimmt für Smart Cards
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 146
Java in .NET (JUMP)
Ca. 20 Sprachen
Java
ByteCodes
C#
Compiler
Compiler
Compiler
JUMP
Converter
Common
Language Runtime
CLR
MSIL
Visual Studio .NET
Architekturen von Web-Anwendungen, LMU, WS-01/02
Class
Loader
oder über das Netz
Visual
J# .NET
Laden vom Filesystem
Visual Baisc
.NET Framework
MSIL: Microsoft Inrtermediate Language
JUMP: Java User Migration Path (to Microsoft .NET)
- Nur Sprache
- Keine Unterstützung für API´s wie RMI
Folie 147
Verteilte Verarbeitung mit Java
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 148
Verteilte Verarbeitung mit Java
•
Fall 1: Nutzung von Java in normaler CORBA Anwendung
– ORB ist Basis
– Java IDL, um Stubs und Skeletons zu generieren
– Wenn Verteilung über Internet, dann zusätzlich IIOP
•
•
•
Fall 2: Anwendung Java basiert
Verteilung im LAN
Fall 3: Hauptteil der Anwendung Java basiert
Verteilung im LAN
Anwendungsteile in anderen Sprachen
Fall 4: Verteilung Java Anwendung im Web
Option der Integration mit anderen Sprachen
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 149
CORBA
Generiert aus
Interface
beschrieben in IDL
Client
Server
Client Stub
Server Skeleton
Object Request Broker (ORB)
Client und Server können
• in beliebigen
• auch unterschiedlichen
Sprachen geschrieben sein
Architekturen von Web-Anwendungen, LMU, WS-01/02
CORBA/IDL sorgt für Mapping
der Interfaces
Folie 150
CORBA; Client in Java
Generiert aus
Interface
beschrieben in IDL
Client
Java
Server
bel. Sprache
Client Stub
Server Skeleton
Object Request Broker (ORB)
• Standardfall für CORBA
• Interface in IDL notwendig
• Client Stub für Java geniert aus IDL
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 151
CORBA; Server in Java
Generiert aus
Interface in Java
Generiert aus
Interface
beschrieben in IDL
Client
bel. Sprache
Server
Java
Client Stub
Server Skeleton
Object Request Broker (ORB)
• Standardfall für CORBA
• Interface in IDL notwendig; generiert aus Java
• Server Skeleton für Java geniert aus IDL
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 152
CORBA über Internet
Generiert aus
Interface
beschrieben in IDL
Generiert aus
Interface
beschrieben in IDL
Client
Server
Client Stub
Server Skeleton
IIOP
ORB-1
Client und Server können
• in beliebigen
• auch unterschiedlichen
Sprachen geschrieben sein
Architekturen von Web-Anwendungen, LMU, WS-01/02
ORB-2
CORBA/IDL sorgt für Mapping
der Interfaces
IIOP – Internet Inter-ORB Protocol
Folie 153
Verteilte Verarbeitung mit Java
•
Fall 1: Nutzung von Java in normaler CORBA Anwendung
– ORB ist Basis
– Java IDL, um Stubs und Skeletons zu generieren
– Wenn Verteilung über Internet, dann zusätzlich IIOP
•
•
•
Fall 2: Anwendung Java basiert
Verteilung im LAN
Fall 3: Hauptteil der Anwendung Java basiert
Verteilung im LAN
Anwendungsteile in anderen Sprachen
Fall 4: Verteilung Java Anwendung im Web
Option der Integration mit anderen Sprachen
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 154
RMI – Remote Method Invocation
Client
(Java)
Server
(Java)
Client Stub
Server Skeleton
Java 2 Platform Standard Edition (J2SE)
•
•
•
•
Client und Server sind beide in Java geschrieben
Separate IDL ist nicht nötig. Java übernimmt die Rolle der IDL
J2SE übernimmt die Rolle des ORB
Stub und Skeleton werden von J2SE generiert
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 155
Verteilte Verarbeitung mit Java (Beispiel)
Web Browser
Applet
Lädt Applet
HTTP
RMI
Web Server
Remote
Method
Invocation
EJB
File System
Application Server
Architekturen von Web-Anwendungen, LMU, WS-01/02
DB
Folie 156
Verteilte Verarbeitung mit Java
•
•
•
Fall 1: Nutzung von Java in normaler CORBA Anwendung
Fall 2: Anwendung Java basiert
Verteilung im LAN
Fall 3: Hauptteil der Anwendung Java basiert
Verteilung im LAN
Anwendungsteile in anderen Sprachen
– Nutzung von JNI (Java Native Interface)
• Verbindung von Java Programmen mit Programmen in anderen Sprachen
• Sowohl: Java ruft andere Sprachen auf; als auch: andere Sprache ruft Java auf
– Details zu JNI hier nicht behandelt
•
Fall 4: Verteilung Java Anwendung im Web
Option der Integration mit anderen Sprachen
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 157
Verteilte Verarbeitung mit Java
•
•
•
•
Fall 1: Nutzung von Java in normaler CORBA Anwendung
Fall 2: Anwendung Java basiert
Verteilung im LAN
Fall 3: Hauptteil der Anwendung Java basiert
Verteilung im LAN
Anwendungsteile in anderen Sprachen
Fall 4: Verteilung Java Anwendung im Web
Option der Integration mit anderen Sprachen
– Java Plattform mit IIOP Option
– Kombination Java Plattform mit anderen Sprachen
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 158
RMI über IIOP
Client
(Java)
Server
(Java)
Client Stub
Server Skeleton
J2SE
IIOP
J2SE
• Wie Standard RMI
• Benutzung des IIOP Protokolls
• Damit Verteilung über das Internet
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 159
Verteilte Verarbeitung mit RMI über IIOP (Beispiel)
Internet
Inter-ORB
Protocol
Web Browser
Applet
Lädt Applet
HTTP
RMI über IIOP
Web Server
Nur Java zu Java
EJB
File System
Application Server
DB
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 160
Kooperation RMI und CORBA (Java Client)
Client
(Java)
Server
(bel. Sprache)
Client Stub
Server Skeleton
J2SE
Generiert aus
Interface
beschrieben in IDL
IIOP
ORB
• Client ist in Java und Server in beliebiger Sprache (von CORBA unterstützt) geschrieben
• Interfacebeschreibung in IDL wird aus Interface in Java generiert
(oder auch umgekehrt?)
Achtung Beschränkung bei existierenden Server Programmen möglich
• J2SE kommuniziert über IIOP mit beliebigem ORB
• Stub wird von J2SE (aus Java) und Skeleton von ORB (aus IDL) generiert
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 161
Verteilte Verarbeitung mit CORBA (Beispiel)
Applet
Web Browser
Lädt Applet
HTTP
IIOP
• IIOP – Kommunikation
zwischen J2SE und
ORBs verschiedener
Hersteller
• Einbindung unterschiedl.
Sprachen möglich
Web Server
Object Request Broker
Java
C++
File System
Andere Sprachen
DB
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 162
Kooperation RMI und CORBA (Java Server)
Client
(bel. Sprache)
Generiert aus
Interface
beschrieben in IDL
Client Stub
ORB
Server
(Java)
Server Skeleton
IIOP
J2SE
• Server ist in Java und Client in beliebiger Sprache (von CORBA unterstützt) geschrieben
• Interfacebeschreibung in IDL wird aus Interface in Java generiert
J2SE kommuniziert über IIOP mit beliebigem ORB
• Skeleton wird von J2SE (aus Java) und Stub von ORB (aus IDL) generiert
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 163
Vorteile RMI gegenüber RPC und CORBA
•
•
•
•
Objekt-orientiert: Argumente und Returnwerte können Objekte sein
Klassen können übertragen werden
– Beispiel: Methoden, die auf dem Server implementiert sind, können zum
Client übertragen werden, um dort direkt ausgeführt zu werden
– Performance Vorteil
RMI basiert auf Java Sicherheitsmechanismen
Leicht zu schreiben und zu benutzen
– Alles in Java, keine separate IDL
– Beispiel Remote Interface für Client:
•
•
import java.rmi.*;
public interface ExpenseServer extends Remote {
Policy getPolicy() throws RemoteException;
void submitReport (ExpenseReport report)
throws RemoteException, InvalidReportexception;
}
Verteiltes Garbage Collection
RMI unterstützt Multi Threading
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 164
Java 2 Platform, Enterprise Edition; Übersicht
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 165
Java 2 Platform, Enterprise Edition
•
•
Java Plattform für Business Anwendungen
Enterprise Edition: Robuste Plattform für unternehmensweite,
geschäfts-kritische Anwendungen
– Einbindung in Unternehmensinfrastruktur
– Transaktions-Unterstützung
– Datenbank Zugriff
•
•
•
Plattform für E-Business Anwendungen
Mehrstufigen Architekturen
Zwei Typen von Anwendungsarchitekturen
– Web basiert
– Traditionelle Client/Server Architektur
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 166
J2EE Stufen Architektur
Tiers
fat Client
Web Browser
J2EE
HTML
Platform
Applet
Client
Web Container
JSP
Web
Servlets
J2EE Server
Client Container
Appl. Client
EJB Container
Entity EJB´s
Database
Session EJB´s
ERP Systems
Message-Driven EJB´s
Legacy Systems
Business
Enterprise
Information
System
Application Component
Architekturen von Web-Anwendungen, LMU, WS-01/02
J2EE Container
J2EE Platform
Folie 167
J2EE
•
•
•
•
J2EE Platform Specification
– API´s
– Release Level, um Kompatibilität, Portabilität und Integration zu sichern
J2EE Compatibility Test Suite
– Hersteller können damit ihre Produkte auf Komformität mit der
Spezifikation testen
J2EE Reference Implementation
– Operationelle Definition der J2EE Plattform
J2EE Application Model
– Guide
– Beispiele und Design Patterns
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 168
J2EE API´s (1)
•
•
Die Nummern kennzeichnen die aktuellen Versionen im Herbst 2001
Enterprise JavaBeans Technology 2.0 (EJB)
–
–
–
–
•
•
Komponententechnologie
Genutzt für Business Logik
EJB laufen in Container
Drei Arten
• Session Beans
• Entity Beans
• Message-driven Beans
JDBC API 2.0
– API zum Zugriff auf relationale Datenbanken
Java Server Pages Technology 1.2 (JSP)
– Textseiten (z.B. HTML oder XML) mit enthaltenem Java Code
– Aus JSP Seiten werden Servlets generiert
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 169
J2EE API´s (2)
•
•
•
•
•
•
•
Java Message Services 1.0 (JMS)
– API zum Erzeugen, Senden, Empfangen und Lesen von Messages
Java Transaction API 1.0 (JTA)
– Klammerung von Datenbankoperationen zu einer Einheit
JavaMail Technology (1.2)
– Versenden von Mails
Java API for XML Processing 1.1 (JAXP)
– Lesen und Bearbeiten von XML Files
J2EE Connector Architecture 1.0 (JCA)
– Technologie zur Integration von anderen Anwendungen
– EAI Technologie von J2EE
Java Authentication and Authorization Services 1.0 (JAAS)
– Authentifizierung und Autorisierung von Benutzern un Gruppen
Java Naming and Directory Interface API (JNDI)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 170
Referenzarchitektur
HTTP
Benutzer-Schnittstellen
Komponenten
Business
Komponenten
Datenbank-Zugriffe
Verzeichnis
Schnittstellen
Portal Server
Firewall
Integrations
Services
Transaktions-Management
Prozess-Management
Content Management
Messaging Services
Sicherheit
LAN
Verzeichnis
Services
Geschäfts
Partner
ERP Systeme
Alt-Anwend.
Datenbanken
Datenbanken
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 171
Referenzarchitektur mit J2EE Komponenten
Blaue Schrift in gestreiften Boxen
kennzeichnen Komponenten der
J2EE Definition
HTTP
LAN
Firewall
Enterprise JavaBeans
JAXP
JDBC API
JNDI
JSP
Servlet
Verzeichnis
Services
Geschäfts
Partner
JCA
WebServices
JTA
Prozess-Management
Content Management
JMS - JavaMail
JAAS
Portal Server
ERP Systeme
Alt-Anwend.
Datenbanken
Datenbanken
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 172
Java 2 Platform, Enterprise Edition
Details
Christian Menk
Software Architektur Berater
Softlab GmbH
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 173
J2EE im Detail
•Java Servlet APIJava
•Java Server Pages Technology 1.2 (JSP)
•Java Authentication and Authorization Services 1.0 (JAAS)
•Java Naming and Directory Interface API (JNDI)
•Java Remote Method Invocation Enterprise (RMI)
•JavaBeans Technology 2.0 (EJB)
•JDBC API 2.0
•Java Message Services 1.0 (JMS)
•Java Transaction API 1.0 (JTA)
•JavaMail Technology (1.2)
•Java API for XML Processing 1.1 (JAXP)
•J2EE Connector Architecture 1.0 (JCA)
•Java Native Interface (JNI)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 174
Java Servlet API
Servlet
– Begriff für ein Java Programm auf dem Server, es erweitert den Webserver
um Funktionalität.
– Ähnlich wie CGI Scripts, sie sind jedoch schneller und brauchen weniger
Ressourcen, weil nicht wie beim CGI ein neuer Prozeß gestartet wird,
sondern bei jeder Anfrage nur ein lightweight-Thread erzeugt wird.
– Ein Servlet kann wie ein Applikationsserver agieren, d.h. ein Websserver
kann ein Servlet wie einen Service behandeln. Z.B. kann eine DBVerbindung aufrechterhalten werden, so dass Anfragen an die DB von
einem Java Programm nicht immer wieder neu aufzubauen sind.
– Benötigt wird ein Webserver auf dem die JVM läuft und die Servlet API
unterstützt wird.
– Bietet ein Server unabhängiges API
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 175
Java Servlet API 2
HTTP Server
Java VM
HTTPServlet
HTTPServlet
HTTPServlet
doGet(HttpServletRequest request,
doGet(HttpServletRequest request,
doGet(HttpServletRequest
request,
HttpServletResponse response);
HttpServletResponse response);
HttpServletResponse
response);
doPost(HttpServletRequest
request,
doPost(HttpServletRequest request,
doPost(HttpServletRequest
request,
HttpServletResponse response);
HttpServletResponse response);
HttpServletResponse response);
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 176
Java Servlet API 3
HTTP Server
Java VM
request
request
request
request
HTTPServlet
HTTPServlet
HTTPServlet
HTTPServlet
thread
CGI Process
request
request
request
request
CGI Process
CGI Process
CGI Process
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 177
Servlet Beispiel
private void doGet(HttpServletRequest request, HttpServletResponse response) {
try{
Enumeration e = request.getParameterNames();
String submitter = request.getParameter("SUBMITTER");
ArrayList optionsList = new ArrayList();
while (e.hasMoreElements()){
String id = e.nextElement().toString();
logTO(id + "::" +request.getParameter(id));
HttpSession session = request.getSession();
if (id.equals("model"))
session.putValue("model",request.getParameter(id));
//if (id.equals("color"))
//session.setAttribute("color",request.getParameter(id));
if (submitter!=null){
session.putValue("SUBMITTER",submitter);
}
...
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 178
Java Server Pages (JSP)
Java Server Pages (JSP)
– Ähnlich wie Microsofts Active Server Pages erlauben Suns Java Server
Pages, Programmcode in HTML-Dokumente einzubetten.
– Eine Technologie, um serverseitig HTML-Seiten zu generieren.
– Aus einer JSP wird vom Server ein Servlet erzeugt.
– JSP können andere Java Objekte benutzen (JSP-Beans)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 179
Java Server Pages (JSP) 2
HTTP Server
5:response
Java VM + JSP Engine
1:request 1
6:request 2-n
5:response
HTTPServlet
4:Kompiliert
und lädt
2:lädt
3:erzeugt
JSP Seiten
Servlet
(HTML+JAVA)
Source
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 180
JSP Beispiel
<jsp:useBean id="ordering" scope="session" class="com.bmw.ivs.jsp.OrderBean" />
<TR VALIGN="top" ALIGN="left">
<TD COLSPAN=2 HEIGHT =22></TD>
<TD WIDTH=56 COLSPAN=2><INPUT id="FormularTextfeld1" TYPE="text" NAME="ho"
VALUE="<%= request.getParameter("ho")%>" SIZE=7 MAXLENGTH=10 ></TD>
<TD></TD>
</TR>
<TR VALIGN="top" ALIGN="left">
<TD HEIGHT =24></TD>
<TD WIDTH=27 COLSPAN=2><SELECT id="FormularKombinationsfeld5" NAME="auftragsart" >
<option value="0„ <%=ordering.checkSelection(request,"auftragsart","0")%>> 0 – Kunde </option>
<option value="1„ <%=ordering.checkSelection(request,"auftragsart","1")%>> 1 – Lager </option>
</SELECT></TD>
</TR>
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 181
Java Authentiction and Authorization Service (JAAS)
•Standard erweiterung der Java 2 Plattform
• Authentifizierungs-Framework
• Pluggable authentication
• User basierte Autorisierung
Application
Login Context API
Konfig.
LoginModul
Kerberos
Architekturen von Web-Anwendungen, LMU, WS-01/02
Smart Card
Biometric
Folie 182
Java Authentiction and Authorization Service (JAAS) 2
**
* Example Java 2 Security Policy Entry
*/
grant Codebase "www.sun.com", Signedby "duke" {
FilePermission "/cdrom/-", "read";
}
/**
* Example JAAS Security Policy Entry
*/
grant Codebase "www.sun.com", Signedby "duke",
Principal com.sun.Principal "charlie" {
FilePermission "/cdrom/charlie/-", "read";
MyPermission “DOSOMETHING";
}
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 183
Java Naming and Directory Interface (JNDI)
JNDI (Java Naming and Directory Services)
– Bietet einen standardiersierten Zugriff auf Verzeichnisdienste, um Objekte
und Ressourcen anzufordern. So werden die Enterprise-JavabeansKomponenten-Schnittstellen über JNDI angefordert.
– Teil des Java Enterprise API. JNDI ist eine Java Standard Extension. Die
API gibt Java Anwendungen eine einheitliche Schnittstelle zu
verschiedenen Naming und Directory Services Funktionalitäten in
Unternehmen.
– Mit JNDI können Java Anwendungen Java Objekte jeden Typs gespeichert
und eingelesen werden, sowie Standard Directory Operationen wie das
Assoziieren von Attributen mit Objekten oder das Suchen nach Objekten
über ihre Attribute ausgeführt werden.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 184
Java Naming and Directory Interface (JNDI) 2
LDAP
Directory
Role
EJB Store
src
EJB Home A
User
a.java
User
b.java
Role
EJB Home C
doc
User
EJB Home B
Tut.txt
JNDI
Lookup
Lookup
Lookup
Java Application
EJB
Servlet
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 185
Java Remote Method Invocation RMI
RMI ( Remote Method Invocation )
– Erstellung von verteilten Java-Anwendungen ( Java-to-Java ).
– Methoden eines remote Java Objekts werden von einer JVM aufgerufen,
die auf einem anderen Host läuft. Ein Java Programm kann ein remote
Objekt aufrufen sobald es eine Referenz des remote Objekts erhalten hat,
entweder über den Bootstrap Naming Service von RMI oder über ein
(Aufruf-) Argument bzw. einen Rückgabewert. Ein Client kann ein remote
Objekt in einem Server aufrufen, wobei der Server wiederum ein Client
aus remote Objekte sein kann.
– RMI verwendet die Java Objekt Serialization zum Speichern und
Zurückholen von Java Objekten, indem ihr Zustand serialisiert über einen
Stream geschrieben und gelesen wird (wie in eine Datei).
– Für Basis-Kommunikationsmechanismen stehen in Java Sockets zur
Verfügung.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 186
Java Remote Method Invocation RMI Ablauf
JNDI
Stub
1: lookup
Java VM
Java VM
2: get
Java Applikation
4: call Skeleton
8: result
3: call
•Netz
Skeleton
6: return result
Stub
5: call OBJ
Java Object
7: result to Stub
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 187
Java Remote Method Invocation RMI over IIOP
RMI-IIOP (Remote Method Invocation - Internet Inter-ORB Protocol)
– Kommunikation von RMI über das Corba-Protokoll IIOP.
– Mittels dieser Brücke ist es möglich, Enterprise Javabeans direkt zu
integrieren, beispielsweise in Visual Basic Clients - und umgekehrt
IIOP (Internet Inter-ORB Protocol)
– Kommunikationsprotokoll von CORBA.
– Standard-Protokoll, das von jedem ORB unterstützt wird.
– Besteht aus GIOP und TCP/IP.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 188
Enterprise Java Beans was ist das ?
Enterprise Java Beans (EJB)
–
–
–
–
–
In EJB’s wird die Business-Logik abgebildet. Sie ist ein Begriff für eine serverseitige
Komponente.
Komponentenmodell für die Entwicklung und Verteilung von Java Komponenten in einer
verteilten Multi-Tier-Umgebung.
EJBs sind portabel und protokollneutral und somit unabhängig von einem bestimmten
Webserver.
EJBs werden oft mit den Java Beans der Client-Seite verwechselt. Beides sind jedoch
unterschiedliche Technologien. Gemeinsam ist nur die Sprache Java und dass es sich
um Komponenten handelt.
EJBs können nicht nur mit Java-Clients und Java-Server-Komponenten kommunizieren,
sondern über DCOM mit Windows-Programmen und über IIOP mit CORBA Servern und
somit mit allen Arten von Anwendungen die via CORBA kommunizieren können.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 189
Enterprise Java Beans Prinzip
JNDI
...
MyBeanHome
...
Client
...
lookUp
1
EJB Container
3a
2
create or find on EJB Home OBJ
3c
cast to EJB remote OBJ
6
5
invoke Method
...
4
Remote Stub
9
Architekturen von Web-Anwendungen, LMU, WS-01/02
EJB OBJ
3b
Server Skeleton
7
8
Folie 190
Enterprise Java Beans aus Client Sicht
try {
//get naming context
Properties properties = null;
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, "t3://localhost:7301");
properties.put(Context.SECURITY_PRINCIPAL, „user“);
properties.put(Context.SECURITY_CREDENTIALS, „PWD“);
Context ctx = new InitialContext(properties);
//look up jndi name
Object ref = ctx.lookup("com.bmw.ivsr.server.bpro.orderentryenquiry.OrderEntryEnquiryBPrOHome");
//cast to Home interface
OrderEntryEnquiryBPrOHome orderEntryEnquiryBPrOHome = (OrderEntryEnquiryBPrOHome)
PortableRemoteObject.narrow(ref, OrderEntryEnquiryBPrOHome.class);
OrderEntryEnquiryBPrO orderEntryEnquiryBPrO = createBPro();
orderEntryEnquiryBPrO.createOrder(orderentry);
catch (Exception e){
}
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 191
Enterprise Java Beans Deployment 1
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN'
'http://java.sun.com/j2ee/dtds/ejb-jar_1_2.dtd'>
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>PurchaseOrderBEO</ejb-name>
<home>com.bmw.ivsr.server.beo.purchaseorder.PurchaseOrderBEOHome</home>
<remote>com.bmw.ivsr.server.beo.purchaseorder.PurchaseOrderBEO</remote>
<ejb-class>com.bmw.ivsr.server.beo.purchaseorder.PurchaseOrderBEOBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>com.bmw.ivsr.server.pk.PurchaseOrderPK</prim-key-class>
<reentrant>False</reentrant>
<cmp-field>
<field-name>purchase_order_id</field-name>
</cmp-field>
</entity>
</enterprise-beans>
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 192
Enterprise Java Beans Deployment 1
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>ManufacturerOrderBEO</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 193
Enterprise Java Beans Session Beans
Es existieren zwei Arten von Session Beans:
•Statefull: sind einer Session zugeordnet und speichern Informationen
von einem Aufruf zum nächsten.
•Stateless: sind keiner Session zugeordnet innerhalb der Session Bean
dürfen keine Informationen gespeichert werden.
Client Zeit
Client Zeit
Pool
Pool
Statefull Session
Statefull Session
Statefull
Bean Session
Statefull
Bean Session
Statefull
Bean Session
Bean
Bean
Architekturen von Web-Anwendungen, LMU, WS-01/02
Stateless Session
Stateless Session
Stateless
Bean Session
Stateless
Bean Session
Bean
Bean
Folie 194
Enterprise Java Beans Entity Beans
Repräsentieren persistente Daten
Bieten create find und delete Methoden
Es existieren zwei Ausprägungen:
•
Entity Bean mit Container managed Persistance
•
Entity Bean mit Bean managed Persistance
EJB Container
Store newA to DB
SetA(newA)
Set newA
CMP Entity
SetA(newA)
DB
Set newA
and Store
Architekturen von Web-Anwendungen, LMU, WS-01/02
BMP Entity
Store newA to DB
Folie 195
Enterprise Java Beans Message Beans
• Neuer Enterprise Java Bean Typ in JB 2.0
• Asynchron
• Wird beim Serverstart erzeugt
• Wird beim eintreffen einer Nachricht aktiviert
• Ist Stateless
• Hat kein Home oder Remote interface
• Die Methode onMessage enthält die Business Logic
• Ist einer JMS Queue oder einem Topic zugeordnet
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 196
Enterprise Java Beans Message Beans 2
EJB Container
Stateless
CMP Entity
Sessionbean
Interaction
Interaction
Message Bean
onMessage
JMS Provider
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 197
Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)
– API für die Anbindung an relationale Datenbanken, so dass
die Abfrage und Aktualisierung der Datenbank mit Hilfe von
SQL ermöglicht wird.
– Funktionalität: Verbindung zur DB herstellen, SQL Befehle
absetzten und Auswertung der Ergebnisse der Anfrage.
– Für eine ODBC-fähige Datenbank genügt eine JDBC-ODBCBridge.
– Es gibt vier JDBC-Lösungskategorien (Typen 1-4):
1. JDBC-ODBC-Bridge
2. plattformeigene JDBC-Treiber
3. universelle JDBC-Treiber
4. direkte JDBC-Treiber
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 198
Java Database Connectivity 2 (JDBC)
Ablauf der Kommunikation mit einer JDBC DB
Java VM
erzeugen
Ablauf DB Kommunikation
erzeugen
Connection
PreparedStatement
Statement
Wird in DB
gespeichert
DB
ausführen
ausführen
auswerten
Ergebnis
ResultSet
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 199
Java Message Service (JMS)
Java Messages Service (JMS)
– API für den Zugang zu Enterprise (unternehmensweite) Messaging Systemen.
– Vereinfacht das Schreiben von Business Applications, welche asynchron Business
Daten und Ereignisse schicken und empfangen.
– Enterprise Beans können auf einfache Weise Nachrichten verschicken und
empfangen.
Zwei Arten:
Point to Point – jede Nachricht hat genau einen Empfänger
Publish Subscribe – jeder Subscriber erhält eine Nachrichten Kopie
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 200
Java Message Service (JMS) 2
Point to Point
JMS Empfänger
JMS Sender
A
JMS Provider
A
B
Queue
C
C
B
DB
Publish - Subscribe
JMS Sender
JMS Empfänger
A
JMS Provider
A,B,C
B
TOPIC
A,B,C
C
A,B,C
DB
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 201
Java Transaction API und Service
JTA (Java Transaction API)
– JTA ist die Programmier-Schnittstelle für Ressourcen-Manager und
Transaktions-Systeme.
Java Transaction Service (JTS)
– Definiert ein Standard Transaction Management API für die Java Plattform
und bietet Zugang zu transaktionsorientierten Umgebungen wie
Prozeßmonitore, Tansaktionsmanager oder Transaktionsapplikationen auf
CORBA-Basis.
– Der JTS wird von den Herstellern vom Transaktions-Manager
implementiert. Die Integration von CICS ist somit ohne weiteres möglich.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 202
Java Transaction API (JTA)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 203
Java Transaction Service (JTS)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 204
Java Mail
Java Mail-API
– Das JavaMail API enthält einen Satz abstrakter Klassen für ein MailSystem, mit JavaMail erhält der Programmierer eine flexible Schnittstelle
für die Entwicklung von Mail-Applikationen.
– Das API liefert ein plattformunabhängiges, protokollunabhängiges
Framework zur Entwicklung von Mail und Messaging Anwendungen
basierend auf Java Technologie. Das API ist als eine Java Standard
Extension implementiert.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 205
Java Mail Beispiel
Session
Store
Transport
getFolder(„A“)
Folder A
getFolder(„C“)
Folder C
Folder C
Message 1
Message 1
getMessage(1)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 206
Java Connector Architecture
Ist Schnittstelle für Applications-Komponenten
Applikation Server
Container-Component Contract
EJB Appl.
System Contract
Ressource Adapter
Container Services
Connection Manager
Transaction Manager
Security Manager
Enterprise System Interface
Behandelt Connection, Transaction und Security
Management zwischen Appserver und Enterprise System
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 207
Java Native Interface (JNI)
Schnittstelle für Java Anwendungen um mit nativ Bibliotheken zu interagieren.
Sind bestehende Anwendungen oder Bibliotheken in eine Serveranwendung
Integrieren die über keine Komponenten Schnittstelle verfügen
(CORBA/RMI/TP-Monitor) so kann mittels des JNI eine Proprietäre
Zugriffsschicht erstellt werden. Sehr gut C – C++ Integration.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 208
Architekturen von Web-Anwendungen, LMU, WS-01/02
BO - Factory
FAT BO - Object FAT BO - Object
BO - Object
BO - Object
FAT BO - Object FAT BO - Object
BO - Object
BO - Object
Controler Object
Controler Object
UI Object
UI Object
UI Object
Controler Object
Controler Object
UI Object
UI Object
UI Object
Client Server
Client
Rich Client Application
DB-System
Folie 209
Architekturen von Web-Anwendungen, LMU, WS-01/02
‚thin‘ BO Object
BO
- Object
‚Thin‘ BO Object
BO
- Object
BO - Factory
‚thin‘ BO Object
BO
- Object
‚thin‘ BO Object
BO
- Object
Command Command
- Object
- Object
Command Command
- Object
- Object
UI Object
UI Object
UI Object
Command
- Object
Command
- Object
UI Object
UI Object
UI Object
Client Server
Client
Rich Client Application
DB-System
Folie 210
‚thin‘ BO - Object
BO - Object
‚thin‘ BO - Object
BO - Object
BO - Object
Architekturen von Web-Anwendungen, LMU, WS-01/02
‚thin‘ BO - Object
BO - Object
BO - Factory
Client
BO - Object
Rich Client Application
BO - Object
‚thin‘ BO - Object
BO - Factory
BO - Object
‚thin‘ BO - Object
BO - Object
Rich Client Application
‚thin‘ BO - Object
Command - Object
‚Thin‘ BO - Object
wenn Jabba von 1.000 Benutzern gleichzeitig benutzt würde
Client
BO - Object
Command - Object
BO - Object
‚thin‘ BO - Object
BO - Object
BO - Object
‚thin‘ BO - Object
BO - Object
Command - Object
‚Thin‘ BO - Object
BO - Factory
Command - Object
Command - Object
UI - Object
UI - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
BO - Object
BO - Object
Client
BO - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
‚thin‘ BO - Object
‚thin‘ BO - Object
BO - Factory
BO - Object
Rich Client Application
BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
BO - Factory
BO - Object
‚thin‘ BO - Object
‚Thin‘ BO - Object
BO - Object
Command - Object
BO - Object
‚thin‘ BO - Object
BO - Object
‚thin‘ BO - Object
Command - Object
Command - Object
BO - Factory
Command - Object
Command - Object
UI - Object
BO - Object
‚thin‘ BO - Object
BO - Object
‚Thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
BO - Object
BO - Object
UI - Object
‚thin‘ BO - Object
‚thin‘ BO - Object
UI - Object
BO - Object
UI - Object
‚Thin‘ BO - Object
Command - Object
BO - Object
BO - Factory
Command - Object
Command - Object
UI - Object
UI - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
Command - Object
UI - Object
UI - Object
BO - Object
BO - Object
UI - Object
‚thin‘ BO - Object
‚thin‘ BO - Object
Client
‚Thin‘ BO - Object
Command - Object
Command - Object
UI - Object
BO - Object
‚thin‘ BO - Object
Command - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
BO - Object
BO - Object
Command - Object
‚Thin‘ BO - Object
BO - Factory
Command - Object
Command - Object
UI - Object
UI - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
Command - Object
UI - Object
UI - Object
BO - Object
BO - Object
UI - Object
‚thin‘ BO - Object
‚thin‘ BO - Object
Rich Client Application
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
UI - Object
BO - Object
BO - Factory
‚thin‘ BO - Object
Client
BO - Object
Rich Client Application
‚thin‘ BO - Object
Rich Client Application
BO - Object
‚Thin‘ BO - Object
Command - Object
Client
BO - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
Command - Object
UI - Object
BO - Object
BO - Object
UI - Object
‚thin‘ BO - Object
‚thin‘ BO - Object
UI - Object
BO - Object
BO - Object
BO - Factory
‚Thin‘ BO - Object
Command - Object
Command - Object
Rich Client Application
BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
BO - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
während einer JABBA Sitzung werden
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Client
‚Thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
BO - Factory
BO - Object
‚Thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
BO - Object
Client
BO - Object
Command - Object
Command - Object
UI - Object
BO - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
‚Thin‘ BO - Object
Command - Object
BO - Object
BO - Factory
Command - Object
Command - Object
UI - Object
UI - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
Rich Client Application
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
UI - Object
‚thin‘ BO - Object
BO - Factory
BO - Object
Client
‚thin‘ BO - Object
Rich Client Application
BO - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
BO - Object
Rich Client Application
BO - Object
UI - Object
ca 280.000 Command und BO Objekte !!
Speicherbedarf: über 5 Gigabyte
UI - Object
‚thin‘ BO - Object
BO - Object
BO - Object
‚thin‘ BO - Object
‚Thin‘ BO - Object
Command - Object
BO - Object
ca 280 Command Objekte und BO Objekte plus 20 View Objekte
Speicherbedarf: ca 6 MB (laut Optimize)
‚thin‘ BO - Object
BO - Factory
Command - Object
Client
BO - Object
Command - Object
UI - Object
Command - Object
Command - Object
UI - Object
UI - Object
Client
‚Thin‘ BO - Object
Command - Object
Command - Object
UI - Object
BO - Factory
BO - Object
‚thin‘ BO - Object
BO - Object
‚Thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
Rich Client Application
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Rich Client Application
‚thin‘ BO - Object
BO - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
Client
UI - Object
BO - Object
BO - Factory
‚Thin‘ BO - Object
Command - Object
BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
‚thin‘ BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
UI - Object
UI - Object
Client Server - und jetzt werden es viele
Rich Client Application
Client
Am BSP JABBA:
Rich Client Application
Client
Client
DB-System
Rich Client Application
Rich Client Application
Client
Folie 211
Was macht WEB basierte Systeme komplex
Applikation Server
Client
Client
WEB
Container
EJB Container
Backendsysteme
Besandsführung I
Client
Callcenter
Client
Enterprise Applikation
Mainframe
Client
Enterprise Applikation
Client
Client
Client
Architekturen von Web-Anwendungen, LMU, WS-01/02
...
Enterprise Applikation
DB
Folie 212
Ein WEB Hit aus J2EE Sicht
KLICK
oder
ENTER
Web Server
Web
Container
Servlet Engine
Web Browser
Browser
schickt
request
Browser
rendert HTML
Ergebnis
Server
empfängt
request
Servlet Engine
sucht JSP/ erzeugt
einen Thread
Server sendet
HTML zum
Browser
JSP
benutzt
JSP Bean
JSP bildet
Ergebnis in
HTML ab
EJB Conteiner
Session EJB führt
Businessmethoden aus
JSP Bean benutzt
EJB home und
remote Methoden
Entity EJB
repräsentieren BO‘s
Session EJB
liefert Ergebnis
an JSP Bean
Persistente Daten
RDBMS und/oder Persistence Schicht
System liefern BO Daten
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 213
Things to consider with J2EE (and any other distributed Obj System)
• Architektur
• Transaktionsmodel
• Objekt Zustand und Verteilung
• Objekt Identität
• Skalierung des Systems
• O/R mapping
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 214
J2EE - Architektur - J2EE Schichten
Client
Server
J2EE Containr (JSP/Servlet/...)
DB
Service
Domain
Persistence
Renders HTML
Content
Invokes
services
Object
Distribution
Business
behavior
Basic CRUD
services
Field - Syntax
Validation
Maintain
conversational
state
Use case
control
Semantic
Validation
O7R mapping
Page flow
Simple Data
Types
Transaction
control
Transaction
support
Enterprise Application
Presentation Application
EJB Container
Application
Domain Objects
Objects
or Entity Beans Domain Objects
and
or Object State
Domain Object
State
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 215
J2EE - Architektur - Service Architektur
System verhaltens und Domain
Grenze
Domain Model
Account Services
JSP/Servlet Client
Domain
Objecte
Application
Objecte
Order Services
Java Client
Rechnungs Services
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 216
J2EE - Transaktionsmodel 1
Transaktion über eine gesamten Use
Case. Die Bearbeitung von BO Daten
findet innerhalb der Transaktion statt.
Die Bearbeitung von BO Daten findet
ausserhalb einer Transaktion statt.
Der Use Case wird in mehrerer kurze
Transaktionen, die unterschiedliche
Ressource binden zerlegt.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 217
J2EE - Transaktionsmodel 2
Write-Write Conflicts kennen wir:
Zeit
getAccount
getAccount
Account Services
2000+1000
2000+1000
2000,00 4000,00
3000,00
Write-Write Conflict Erkennung
•Timestamps
•Counters
•State comparison
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 218
J2EE - Objekt Zustand und Verteilung 1
Remote Objekt Referenz und Serialisierung
Remote Objekt Referenzen
Das Problem mit der Serialisierung:
Transitive Menge
jeder Aufruf einer Methode ist ein remote
Aufruf. Wenn X get Methoden benötigt
werden, um den Namen, Vornamen etc.
der Person darzustellen finden
mindestens X-1 unnötige Remote Aufrufe
statt.
Ein System das sich so verhält wird als
chatty bezeichnet.
Gewünschte Menge
Person
Adresse
Stadt
Andere
Daten
Verzeichnis
der Städte
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 219
J2EE - Objekt Zustand und Verteilung 2
Domain Model
Methoden
Aufruf
Account Services
Service Client
Return Wert
State
Holder
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 220
J2EE - Objekt Zustand und Verteilung 3
Guide für Objekt Verteilung:
•So wenig Objekte verteilen wie nötig
•So wenig remote Referenzen wie möglich
•Keine serialisierten Objektgeflechte versenden
wenn nur ein Teil benötigt wird
•Nur vom Client benötigte Daten senden.
•Keine großen Objekt Sammlungen an den Client
- Leichtgewichtigen Ersatz verwenden
•Meistens sind State Objekte in unterschiedlicher
Ausprägung eine gute Wahl.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 221
J2EE - Skalierung des Systems 1
Stateful versus Stateless Session Beans
Stateless Beans können von vielen Sessions benutzt
werden aber Session Status Informationen müssen
irgend wo anders abgelegt werden.
Entity Beans versus Java Classes
Entity Beans sind Schwergewichte und dementsprechend
belasten sie den EJB Containert sehr.
Hier macht es die Mischung aus Entity Objekten und
abhängigen Objekten die als ‚normale‘ Java Objekte
implementiert werden könne.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 222
J2EE - Skalierung des Systems 2
JSPs and JSP Beans
JSP‘s und JSP Beans sind, neben der HTTP Session
eine Ort wo Session Status Informationen
gespeichert werden können.
Connection Pooling
Verbindungen zur Datenbank sind eine ‚teuere‘ Ressource, die
am besten zu 100 % genutzt werden sollte. Deshalb sollte sie
vielen Clients zur Verfügung stehen. Ist nur in Verbindung mit
dem Model der kurzen Transaktionen möglich.
Große Ergebnismengen
Eine Abfrage kann zu großen Ergebnismengen führen.
In diesem Fall muß das System dem Client einen ‚Cursor‘
Mechanismus anbieten und sollte nicht die gesamte
Ergebnismenge zurück liefern.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 223
J2EE - O/R mapping 1
Objekt Dirtiness
Die Persistenzschicht muß in der Lage sein jede Änderung
in einem Objekt zu erkennen um diese Persistent zu machen.
Objekt Identität
Oder wer gehört zu wem. Insb. Mit State Objekten ein Problem.
A
B
C = C
??
Architekturen von Web-Anwendungen, LMU, WS-01/02
A
B
C
Folie 224
J2EE - O/R mapping 2
Automatisch (CMP) oder von Hand (JDBC) ??
Beides !!
•CMP rein zur Speicherung und Suche nach
einzelnen, kompletten Objekten.
•JDBC zur Bildung von Listen und immer wenn
Optimierung nötig.
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 225
The BIG Picture
Client
Browser +
JavaScript
Backendsysteme
I*Net
JSP/Servlet
WEB
Container
EJB Container
One to One
Marketing
System
WAP
Gateway
EMail
Client
MAIL
SERVER
Service Broker
WAP Mobil
- Device
Content
Management/ Web
Authoring
Portal
UseCase
Kunden
Connector‘s
BesandsBesandsBesandsführung I
führung
führung I II
UseCase
Connector‘s
Callcenter
UseCase
UseCase
Connector‘s
...
...
Connector’s
I*Net DB
Connector’s
Connector’s
Message oriented Middleware
Architekturen von Web-Anwendungen, LMU, WS-01/02
Directory Server
Folie 226
J2EE Schichten - in der i*Net Plattform
Backendsysteme
I*Net
WEB Container
WAP
Gateway
MAIL
SERVER
UseCase
UseCase
UseCase
Connector‘s
Persistence
Portal
Service
Domain
Domain
UseCase
Service Broker
One to One
Marketing
System
WAP Mobil
- Device
EMail
Client
Kunden
JSP/Servlet
Content
Management/ Web
Application
Authoring
Presentation
Browser +
JavaScript
EJB Container
Connector‘s
Connector‘s
Enterprise Applicationen
Client
BesandsBesandsBesandsführung I
führung
führung I II
Callcenter
...
...
Connector’s
I*Net DB
Connector’s
Connector’s
Message oriented Middleware
Architekturen von Web-Anwendungen, LMU, WS-01/02
Directory Server
Folie 227
One to One Marketing System / Portal
WEB
Container
One to One
Marketing
System
Portal
Mögliche Produkte:



•
•
•
•
•
•
•
Personalisierung
Authentifizierung
Tracking
Business Rule Engine
Business Rule Managment System
Session Handling
Rechte Rollen Konzept
Broadvision
ILOG JRules /USoft Developer Series
+ BEA Commerce Servers
ILOG JRules /USoft Developer Series
+ IBM Enterprise Information Portal
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 228
Contentmanagament System/Web Authoring
Content
Management/ Web
Authoring
WEB
Container
Architekturen von Web-Anwendungen, LMU, WS-01/02
Verwaltet den Inhalt des I*NET
Portals und ermöglicht die Erstellung
von HTML Seiten ohne HTML
Kenntnisse idealer weise als
WEB Anwendung.
Führt den Anwender (Inhouse/
Außendienst) am Cooperate Design
entlang zu seinen neuen Seiten.
Folie 229
Webanwendungen in der i*Net Plattform
JSP/Servlet
WEB
Container
Controller
Servlet
Browser
WEB Anwendungen innerhalb der
i*NET Plattform bilden das
Model View Controller Pattern ab.
Model(EJB‘s)
dispatch
Request forward
View
JSP
UseCase OBJ
get Data
Contentmanagament
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 230
Service Broker
Ist System / Plattformunabhänige
Schnittstelle zu den Usecase
Entkoppelt die Systeme/Dienste durch
den Einsatz von XML dies macht
eine unabhängige
Weiterentwicklung der Subsysteme
und ‚Anwednungen‘ möglich
Architekturen von Web-Anwendungen, LMU, WS-01/02
Service Broker
XML
EJB Container
dispatch
Folie 231
UseCase
Ein ‚Usecase‘ ist hier ein Teil einer
Szenario Implementierung. Er stellt
die für die Durchführung eines
Szenarios nötigen Funktionen
zur Verfügung.
EJB Container
UseCase
Zusätzlich bildet er die
Transaktionsklammen für alle
ablaufenden Teilfunktionen. Dabei
muß auch ein zwei Phasen
Commit möglich sein (Einbindung
von Basissystemen).
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 232
Szenario Logik
Prozeß Logik
Architekturen von Web-Anwendungen, LMU, WS-01/02
Entity
Object
UseCase/
„Szenario“
Entity
Object
Business
activity Object
EJB Container
Entity
Object
Business
activity Object
Business
activity Object
Business
activity Object
Business
activity Object
Szenario Inferface Object
UseCase/Szenario - genauer betrachtet
UseCase
Entity Logik
Folie 233
Basis- / Backendsysteme
Backendsysteme
Connectoren werden für alle benötigten
Basissysteme erstellt, so werden diese in der
i*Net Plattform einheitlich verfügbar gemacht.
Neben Connectoren zu Basissystemen sind
auch Connectoren zu i*Net Plattform eigenen
Diensten wie DB, Messaging und Directory
nötig.
Kunden
Connector‘s
Connector‘s
Connector‘s
Connector’s
BesandsBesandsBesandsführung I
führung
führung I II
Callcenter
...
I*Net DB
Connector’s
Message oriented Middleware
Architekturen von Web-Anwendungen, LMU, WS-01/02
Directory Server
Folie 234
Szenario 1 in der Vision
Interessent
CICS/MQS/JNI/...
Browser +
JavaScript
MAIL
SERVER
createInfo
Request
getTarifInfo
Tarifengine
respons
createInter
essent
createInfo
Request
getAAP
getMail
Vorl
Interessent
getTarif
getTarif
Info
Info
create
Interessent
createInfo
Request
AAP SYS
InfoRequest
data (XML)
Content Management
Tarif INFO
View
AAP
EMail
Client
Kunden
Szenario 1
(XML) Service requ
EMail
Client
EJB Container
AAP
JavaScript
Contoler
JSP/Servlet
Servlet
WEB
Container
Service Broker
post
TARIF+FORM
Browser
Backendsysteme
I*Net
I*Net DB
postEMAIL
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 235
Szenario 1 in der Vision
Interessent
Browser +
JavaScript
EMail Info + Vorlage MAIL
Client
SERVER
createInfo
Request
getTarifInfo
createInter
essent
createInfo
Request
getAAP
getMail
Vorl
Tarifengine
Interessent
AAP
data (XML)
getTarif
getTarif
Info
Info
create
Interessent
createInfo
Request
AAP SYS
InfoRequest
Tarif INFO
View
Kunden
AAP
EMail
Client
EJB Container
Szenario 1
Service Broker
JavaScript
Contoler
JSP/Servlet
Servlet
WEB
Container
Content Management
post Info request
Browser
+
Backendsysteme
I*Net
I*Net DB
postEMAIL
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 236
Szenario 3 in der Vision
AAP
Portal
Browser +
JavaScript
EMail
Client
Content
Management/ Web
Authoring
Browser +
JavaScript
Logon + session MM
One to One
Marketing data (XML)
EMail
System
Client
EJB Container
Szenario 3
getKunde
getVorg
getVorg
Status
Info
Kunde
JSP/Servlet
WEB
Container
Service Broker
post Info request
Backendsysteme
I*Net
Workflow
Connector
Kunden
Workflow
get
Vorgang
getAAP
create
AkquiHint
getMail
Vorl
postEMAIL
MAIL
SERVER
AAP
Kunde
AAP SYS
I*Net DB
getTracink
Data
Architekturen von Web-Anwendungen, LMU, WS-01/02
Timed Service
Folie 237
Szenario 3 in der Vision
Vorlage + Link
Browser +
JavaScript
Portal
create WebPage
getKunde
getVorg
getVorg
Status
Info
Workflow
Connector
Kunden
Workflow
get
Vorgang
getAAP
create
AkquiHint
getMail
Vorl
postEMAIL
EMail Info + Vorlage MAIL
Client
SERVER
getTracink
Data
Architekturen von Web-Anwendungen, LMU, WS-01/02
Kunde
EJB Container
Szenario 3
Service Broker
Browser +
JavaScript
Logon + session MM
One to One
Marketing
EMail
System
Client
WEB
Container
Content
Management/ Web
Authoring
JSP/Servlet
AAP
Backendsysteme
I*Net
Timed Service
AAP
Kunde
AAP SYS
Tracking
Info I*Net DB
nach
Business
Rules
Folie 238
Szenario 3 in der Vision (Variante)
WEB
Container
Szenario 3
One to One
Marketing
System
Browser +
JavaScript create WebPage
Info
requ
Service Broker
Portal
AAP
getKunde
getVorg
getVorg
Status
Info
Content
Management/ Web
Authoring
EMail
Client
EJB Container
Kunde
JSP/Servlet
Browser +
JavaScript
EMail
Client
Backendsysteme
I*Net
Workflow
Connector
Kunden
Workflow
get
Vorgang
getAAP
create
HintEMail
getMail
Vorl
postEMAIL
MAIL
SERVER
AAP
Kunde
AAP SYS
Tracking
Info I*Net DB
getTracink
Data
Architekturen von Web-Anwendungen, LMU, WS-01/02
Timed Service
Folie 239
Wichtige Kriterien für die i*Net Plattform
•
•
•
•
•
•
•
‚kleine‘ Subsysteme
lose Kopplung zwischen den Subsystemen
XML wo immer möglich
Verteilung der Last auf alle Schichten
Einsatz von Industriestandards
Einsatz von etablierten Produkten
frühe Ein-/Anbindung bestehender Systeme
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 240
XML und Performance
4000
3500
Millisec
3000
serobj mit 3 Param
XML mit 3 Param
serobj 6 Param
XML 6 Param
serobj 9 Param
XML 9 Param
2500
2000
1500
1000
500
m
it
10
m 0
it
50
m 0
it
9
m 00
it
13
m 00
it
17
m 00
it
21
m 00
it
25
m 00
it
29
m 00
it
33
00
0
Aufrufen
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 241
Ergebnisse der i*Net Plattform 1
UseCase/
„Szenario“
Service
Broker
Connector
Content
Management
One to One
Marketing
System
Portal
Java Framework und Templates
Server + EJB das über eine XML Schnittstelle jeglichen
Service starten kann.
Java Basisklassen und Templates + Connectoren
Verbindung zum One to One System
Einrichtung und Anbindung
Templates für das Business Rule System
Einrichtung der Business Rule Umgebung
(Event System)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 242
Ergebnisse der i*Net Plattform 2
Message oriented Middleware
Einrichten der Plattform Message Threads
Standard Connectoren
Directory Server
Einrichten der Plattform Struktur
Standard Connectoren
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 243
Things to keep in mind 1
Architektur:
•System in die Schichten zerlegen entscheiden wo welches Objekt ‚lebt‘
•Benötigte Services und deren ‚Service Manager‘identifizieren
•Definieren des Services API (XML ?)
•Die Art benötigten Transaktionen festlegen
•Entscheiden ob und wie write-write Konflikte erkannt werden
•Objekt Verteilung festlegen
- Referenzen
- State Objekte
- Distribution Objekte (enthalten Informationen aus mehreren Domain
Objekten)
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 244
Things to keep in mind 2
Skalierung:
•Wie viele konkurrierende Benutzer wird es geben ?
•Wie viele statefull Beans wird das System verkraften ?
•Was soll ‚gepoolt‘ werden und in welchem Umfang ?
•Die Art benötigten Transaktionen festlegen ?
•Wie werden große Ergebnismengen behandelt ?
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 245
Things to keep in mind 3
Persistenz:
•RDBMS oder Objekt DB ?
•Bei RDBMS O/R mapping build - buy ?
•Persistenz für jeden Service betrachten
•RDBMS Dantenbank Design muß das Objekt Model unterstützen
•Anforderungen der benötigten Legacy Systeme beachten
Architekturen von Web-Anwendungen, LMU, WS-01/02
Folie 246
Herunterladen