Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht
Document Sample


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 OO-
Sprache, 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 Class
SourceCodes Loader
Laden vom Filesystem
oder über das Netz
Java ByteCode
Compiler Verifier
Just in Time
Java
Compiler
ByteCodes
Java
Java Developers Kit Virtual Machine
Binary
IDE´s
Code
IDE: Integrated Development Environment
z.B. JBuilder von Borland Java Platform
Architekturen von Web-Anwendungen, LMU, WS-01/02 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
Visual Class
Visual Baisc C#
J# .NET Loader
Laden vom Filesystem
oder über das Netz
Compiler Compiler Compiler
Common
Language Runtime
Java JUMP CLR
MSIL
ByteCodes Converter
Visual Studio .NET .NET Framework
MSIL: Microsoft Inrtermediate Language
JUMP: Java User Migration Path (to Microsoft .NET)
- Nur Sprache
Architekturen von Web-Anwendungen, LMU, WS-01/02 - 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 CORBA/IDL sorgt für Mapping
• in beliebigen der Interfaces
• auch unterschiedlichen
Sprachen geschrieben sein
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 150
CORBA; Client in Java
Generiert aus
Interface
beschrieben in IDL
Client Server
Java 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 Generiert aus
Interface in Java Interface
beschrieben in IDL
Client Server
bel. Sprache 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 Generiert aus
Interface Interface
beschrieben in IDL beschrieben in IDL
Client Server
Client Stub Server Skeleton
IIOP
ORB-1 ORB-2
Client und Server können CORBA/IDL sorgt für Mapping
• in beliebigen der Interfaces
• auch unterschiedlichen
Sprachen geschrieben sein
IIOP – Internet Inter-ORB Protocol
Architekturen von Web-Anwendungen, LMU, WS-01/02 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 Server
(Java) (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
Remote Web Server
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 Server
(Java) (Java)
Client Stub Server Skeleton
IIOP
J2SE 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 Web Browser
Inter-ORB Applet
Protocol
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)
Generiert aus
Interface
Client Server beschrieben in IDL
(Java) (bel. Sprache)
Client Stub Server Skeleton
IIOP
J2SE 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)
Web Browser
Applet
Lädt Applet
HTTP
• IIOP – Kommunikation
IIOP
zwischen J2SE und Web Server
ORBs verschiedener
Hersteller
• Einbindung unterschiedl.
Sprachen möglich
Object Request Broker
File System
Java C++ Andere Sprachen
DB
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 162
Kooperation RMI und CORBA (Java Server)
Generiert aus
Interface
Client beschrieben in IDL Server
(bel. Sprache) (Java)
Client Stub Server Skeleton
IIOP
ORB 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
Client Container
HTML Applet Client
Appl. Client
Web Container
J2EE Platform
JSP Servlets Web
J2EE Server
EJB Container
Entity EJB´s Session EJB´s Message-Driven EJB´s Business
Enterprise
Database ERP Systems Legacy Systems Information
System
Application Component
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 167
J2EE Container J2EE Platform
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
LAN HTTP
Firewall
Schnittstellen
Verzeichnis
Portal Server Verzeichnis
Transaktions-Management
Services
Prozess-Management
Content Management
Messaging Services
Benutzer-Schnittstellen
Sicherheit
Komponenten Geschäfts
Partner
Business
Integrations
Services
Komponenten ERP Systeme
Datenbank-Zugriffe 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
LAN HTTP
Firewall
Portal Server Verzeichnis
Services
JNDI
Prozess-Management
Content Management
JMS - JavaMail
JSP
Servlet Geschäfts
JAAS
JTA
Partner
Enterprise JavaBeans
WebServices
JAXP ERP Systeme
JCA
JDBC API 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 DB-
Verbindung 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 HTTPServlet
request HTTPServlet
request HTTPServlet
HTTPServlet
thread
CGI Process
request CGI Process
request
request
request 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 HTTPServlet
5:response
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 Smart Card Biometric
Architekturen von Web-Anwendungen, LMU, WS-01/02 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-Javabeans-
Komponenten-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 EJB Store
Role src EJB Home A
User a.java
EJB Home B
User b.java
EJB Home C
Role doc
User 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
Java VM 1: lookup Java VM
2: get
Java Applikation
4: call Skeleton
8: result 3: call
•Netz Skeleton
6: return result 5: call OBJ
Stub
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 1 EJB Container
...
lookUp
3a
2
create or find on EJB Home OBJ
3c EJB OBJ
3b
cast to EJB remote OBJ
5 6
invoke Method 4 Remote Stub Server Skeleton 7
...
9 8
Architekturen von Web-Anwendungen, LMU, WS-01/02 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 Stateless Session
Statefull Session
Bean Stateless Session
Statefull Session
Bean Stateless Session
Statefull Session Bean
Stateless Session
Bean Bean
Bean Bean
Bean Bean
Architekturen von Web-Anwendungen, LMU, WS-01/02 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
SetA(newA) Store newA to DB
Set newA
CMP Entity
DB
SetA(newA) Set newA Store newA to DB
and Store BMP Entity
Architekturen von Web-Anwendungen, LMU, WS-01/02 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-ODBC-
Bridge.
– 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
Connection
Ablauf DB Kommunikation
erzeugen Wird in DB
PreparedStatement
gespeichert
DB
ausführen
Statement
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 Sender JMS Empfänger
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 Mail-
System, 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
getFolder(„A“)
Transport Folder A
getFolder(„C“)
Folder C Folder C
getMessage(1)
Message 1 Message 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
UI - UI - UI -
Object Object Object
UI - UI - UI -
Object Object Object
Controler - Controler -
Object Object
Client Server
Controler - Controler -
Object Object
Architekturen von Web-Anwendungen, LMU, WS-01/02
Client
FAT BO - Object FAT BO - Object
BO - Object BO - Object
Rich Client Application
FAT BO - Object FAT BO - Object
BO - Object BO - Object
BO - Factory
DB-System
Folie 209
UI - UI - UI -
Object Object Object
UI - UI - UI -
Object Object Object
Command Command Command
- Object - Object - Object
Client Server
Command Command Command
- Object - Object - Object
Architekturen von Web-Anwendungen, LMU, WS-01/02
‚thin‘ BO - ‚Thin‘ BO -
Client
Object
BO - Object Object
BO - Object
Rich Client Application
‚thin‘ BO - ‚thin‘ BO -
Object
BO - Object Object
BO - Object
BO - Factory
DB-System
Folie 210
UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object
UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object
Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object
Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object
Command - Object Command - Object Command - Object Command - Object
Client
Client
Client
Client
‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object
Rich Client Application
Rich Client Application
Rich Client Application
Rich Client Application
BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object
‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object
BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object
BO - Factory BO - Factory BO - Factory BO - Factory
UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object
UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object
Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object
Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object
Command - Object Command - Object Command - Object Command - Object
Client
Client
Client
Client
‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object
Rich Client Application
Rich Client Application
Rich Client Application
Rich Client Application
BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object
‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object
BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object
BO - Factory BO - Factory BO - Factory BO - Factory
UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object
UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object
Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object
Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object
Command - Object Command - Object Command - Object Command - Object
Client
Client
Client
Client
‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object
Architekturen von Web-Anwendungen, LMU, WS-01/02
Rich Client Application
Rich Client Application
Rich Client Application
Rich Client Application
BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object
‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object
BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object
BO - Factory BO - Factory BO - Factory BO - Factory
Am BSP JABBA:
UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object
UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object UI - Object
Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object
Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object Command - Object
Command - Object Command - Object Command - Object Command - Object
Client
Client
Client
Client
‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object ‚thin‘ BO - Object ‚Thin‘ BO - Object
Rich Client Application
Rich Client Application
Rich Client Application
Rich Client Application
BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object
Speicherbedarf: über 5 Gigabyte
‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object ‚thin‘ BO - Object
BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object BO - Object
während einer JABBA Sitzung werden
Speicherbedarf: ca 6 MB (laut Optimize)
ca 280.000 Command und BO Objekte !!
BO - Factory BO - Factory BO - Factory BO - Factory
wenn Jabba von 1.000 Benutzern gleichzeitig benutzt würde
ca 280 Command Objekte und BO Objekte plus 20 View Objekte
Client Server - und jetzt werden es viele
DB-System
Folie 211
Was macht WEB basierte Systeme komplex
Applikation Server Backendsysteme
Client
Client WEB EJB Container Besands-
Container führung I
Client
Callcenter
Client Enterprise Applikation
Client Mainframe
Enterprise Applikation
Client
...
Client Enterprise Applikation
Client DB
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 212
Ein WEB Hit aus J2EE Sicht
Web Browser
KLICK Browser Browser
oder schickt rendert HTML
ENTER request Ergebnis
Web Server
Server Server sendet
empfängt HTML zum
request Browser
Web
Container Servlet Engine JSP JSP bildet
Servlet - sucht JSP/ erzeugt benutzt Ergebnis in
Engine einen Thread JSP Bean HTML ab
EJB Conteiner Session EJB führt
Businessmethoden aus
JSP Bean benutzt Session EJB
EJB home und liefert Ergebnis
remote Methoden Entity EJB an JSP Bean
repräsentieren BO‘s
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/...) EJB Container DB
Enterprise Application
Presentation Application Service Domain Persistence
Renders HTML Invokes Object Business Basic CRUD
Content services Distribution behavior services
Field - Syntax Maintain Use case Semantic O7R mapping
Validation conversational control Validation
state Transaction
Transaction support
Page flow control
Simple Data
Types 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 Gewünschte Menge
jeder Aufruf einer Methode ist ein remote
Aufruf. Wenn X get Methoden benötigt Person
werden, um den Namen, Vornamen etc.
der Person darzustellen finden
mindestens X-1 unnötige Remote Aufrufe
Adresse
statt.
Ein System das sich so verhält wird als
chatty bezeichnet.
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
Service Client Account Services
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 A B
C = C C
??
Architekturen von Web-Anwendungen, LMU, WS-01/02 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 I*Net Backendsysteme
WEB EJB Container
Container Kunden
Browser + JSP/Servlet
JavaScript
Besands-
Besands-
One to One Besands- I
führung
UseCase Connector‘s führung II
Marketing führung I
System
Service Broker
UseCase
Callcenter
Connector‘s
Management/ Web
Portal
UseCase
Authoring
Content
WAP Mobil
- Device ...
UseCase Connector‘s
WAP
Gateway
...
EMail MAIL Connector’s I*Net DB
Client SERVER Connector’s
Connector’s
Message oriented Middleware
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 226
Directory Server
J2EE Schichten - in der i*Net Plattform
Client I*Net Backendsysteme
WEB Container EJB Container
Kunden
Browser + JSP/Servlet
Enterprise Applicationen
JavaScript
Besands-
Besands-
One to One Besands- I
führung
UseCase Connector‘s führung II
Marketing führung I
Presentation
Persistence
Application
System
Domain
Service
Service Broker
UseCase
Domain Callcenter
Connector‘s
Management/ Web
Portal
UseCase
Authoring
Content
WAP Mobil
- Device ...
UseCase Connector‘s
WAP
Gateway
...
EMail MAIL Connector’s I*Net DB
Client SERVER Connector’s
Connector’s
Message oriented Middleware
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 227
Directory Server
One to One Marketing System / Portal
WEB
Container
• Personalisierung
One to One
• Authentifizierung
Marketing • Tracking
System
• Business Rule Engine
• Business Rule Managment System
Portal
• Session Handling
• Rechte Rollen Konzept
Mögliche Produkte: 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
WEB Verwaltet den Inhalt des I*NET
Container Portals und ermöglicht die Erstellung
von HTML Seiten ohne HTML
Kenntnisse idealer weise als
WEB Anwendung.
Management/ Web Führt den Anwender (Inhouse/
Authoring Außendienst) am Cooperate Design
entlang zu seinen neuen Seiten.
Content
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 229
Webanwendungen in der i*Net Plattform
WEB Anwendungen innerhalb der
WEB i*NET Plattform bilden das
Container
JSP/Servlet Model View Controller Pattern ab.
Controller Model(EJB‘s)
Servlet dispatch
Browser Request forward UseCase OBJ
View get Data
JSP
Contentmanagament
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 230
Service Broker
Ist System / Plattformunabhänige EJB Container
Schnittstelle zu den Usecase
XML dispatch
Service Broker
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 Folie 231
UseCase
EJB Container
Ein ‚Usecase‘ ist hier ein Teil einer
Szenario Implementierung. Er stellt
die für die Durchführung eines
Szenarios nötigen Funktionen UseCase
zur Verfügung.
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 Inferface Object
Szenario Logik
Business Business
activity Object activity Object
Architekturen von Web-Anwendungen, LMU, WS-01/02
Business
activity Object
Prozeß Logik
UseCase
Business Business
UseCase/
„Szenario“
activity Object activity Object
EJB Container
UseCase/Szenario - genauer betrachtet
Entity Entity Entity
Object Object Object
Entity Logik
Folie 233
Basis- / Backendsysteme
Backendsysteme
Kunden
Connectoren werden für alle benötigten
Basissysteme erstellt, so werden diese in der Besands-
i*Net Plattform einheitlich verfügbar gemacht. Besands-
Besands- I
führung
Connector‘s führung II
führung I
Neben Connectoren zu Basissystemen sind
auch Connectoren zu i*Net Plattform eigenen Connector‘s
Callcenter
Diensten wie DB, Messaging und Directory
nötig.
...
Connector‘s
Connector’s I*Net DB
Connector’s
Message oriented Middleware
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 234
Directory Server
Szenario 1 in der Vision
Interessent I*Net Backendsysteme
WEB EJB Container
Contoler Container Kunden
post TARIF FORM
Browser + JSP/Servlet
Servlet Szenario 1
JavaScript
CICS/MQS/JNI/...
getTarif getTarifInfo Tarifengine
(XML) Service requ getTarif
Service Broker
Info respons
Interessent
EMail Tarif INFO Info
Client View data (XML) create createInter
Interessent essent AAP SYS
createInfo
Content Management
Request
AAP createInfo
createInfo
InfoRequest
Request
Request
Browser +
JavaScript getAAP
getMail I*Net DB
AAP
EMail MAIL
Client SERVER Vorl
postEMAIL
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 235
Szenario 1 in der Vision
Interessent I*Net Backendsysteme
WEB EJB Container
Contoler Container Kunden
Browser request
post Info + JSP/Servlet
Servlet Szenario 1
JavaScript
getTarif getTarifInfo Tarifengine
getTarif
Service Broker
Info
Interessent
EMail Tarif INFO Info
data (XML)
Client View create createInter
Interessent essent AAP SYS
createInfo
Content Management
Request
AAP createInfo
createInfo
InfoRequest
Request
Request
Browser +
JavaScript getAAP
getMail I*Net DB
AAP
EMail Info + Vorlage MAIL
Client SERVER Vorl
postEMAIL
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 236
Szenario 3 in der Vision
Kunde I*Net Backendsysteme
Kunde
WEB EJB Container
post Info request Container Kunden
Browser + JSP/Servlet getKunde
Szenario 3
JavaScript
Logon + session MM
One to One getVorg Workflow
getVorg Workflow
Marketing data (XML) Status Connector
EMail System Info
Client
Service Broker
get
Vorgang
Management/ Web
Portal
AAP
Authoring
getAAP
Content
create
AAP
AAP SYS
Browser + AkquiHint
JavaScript getMail
Vorl
postEMAIL I*Net DB
EMail MAIL
Client SERVER
getTracink
Data
Architekturen von Web-Anwendungen, LMU, WS-01/02
Timed Service Folie 237
Szenario 3 in der Vision
Kunde I*Net Backendsysteme
Kunde
WEB EJB Container
Container Kunden
Browser + JSP/Servlet getKunde
Szenario 3
JavaScript
Logon + session MM
One to One getVorg Workflow
getVorg Workflow
Marketing Status Connector
EMail System Info
Client
Service Broker
get
Vorlage + Link
Vorgang
Management/ Web
Portal
AAP
Authoring
getAAP
Content
create
AAP
AAP SYS
Browser + create WebPage AkquiHint
JavaScript getMail
Vorl
Tracking
EMail Info + Vorlage MAIL
postEMAIL Info I*Net DB
Client SERVER nach
getTracink Business
Data Rules
Architekturen von Web-Anwendungen, LMU, WS-01/02
Timed Service Folie 238
Szenario 3 in der Vision (Variante)
Kunde I*Net Backendsysteme
Kunde
WEB EJB Container
Container Kunden
Browser + JSP/Servlet getKunde
Szenario 3
JavaScript
One to One getVorg Workflow
getVorg Workflow
Marketing Status Connector
EMail System Info
Client
Service Broker
get
Vorgang
Management/ Web
Portal
AAP requ
Authoring
getAAP
Content
create
AAP
AAP SYS
Browser + HintEMail
JavaScript create WebPage getMail
Vorl
Tracking
EMail MAIL
postEMAIL Info I*Net DB
Info
Client SERVER
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
3000 serobj mit 3 Param
2500 XML mit 3 Param
Millisec
serobj 6 Param
2000
XML 6 Param
1500 serobj 9 Param
1000 XML 9 Param
500
0
m 00
m 00
m 00
m 00
m 00
00
m 0
m 0
m 00
10
50
13
17
21
25
29
33
9
it
it
it
m
it
it
it
it
it
it
Aufrufen
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 241
Ergebnisse der i*Net Plattform 1
UseCase/ Java Framework und Templates
„Szenario“
Service Server + EJB das über eine XML Schnittstelle jeglichen
Broker Service starten kann.
Connector Java Basisklassen und Templates + Connectoren
Content Verbindung zum One to One System
Manage-
ment
One to One
Marketing Einrichtung und Anbindung
System Templates für das Business Rule System
Einrichtung der Business Rule Umgebung
Portal (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
Get documents about "