Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

105
Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 1 Rolle von Java Rolle von Java Verteilte Verarbeitung mit Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Übersicht J2EE Details J2EE Details

description

Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details. 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 - PowerPoint PPT Presentation

Transcript of Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Page 1: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 1

Rolle von JavaRolle von Java

Verteilte Verarbeitung mit JavaVerteilte Verarbeitung mit Java

J2EE ÜbersichtJ2EE Übersicht

J2EE DetailsJ2EE Details

Page 2: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 2

Entwicklung von JavaEntwicklung 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)

Page 3: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 3

Rolle von JavaRolle 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)

Page 4: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 4

Java Entwicklung und AusführungJava Entwicklung und Ausführung

JavaSourceCodes

JavaSourceCodes

Java

Compiler

Java

Compiler

Java

ByteCodes

Java

ByteCodes

Class

Loader

Class

Loader

ByteCode

Verifier

ByteCode

Verifier

Java

Virtual Machine

Java

Virtual Machine

Just in Time

Compiler

Just in Time

Compiler

Binary

Code

Binary

Code

Java Developers KitIDE´s

Java Platform

La

de

n v

om

File

syst

em

od

er

üb

er

da

s N

etz

IDE: Integrated Development Environment

z.B. JBuilder von Borland

Page 5: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 5

Java PlattformenJava 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

Page 6: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 6

Java in .NET (JUMP)Java in .NET (JUMP)

VisualJ# .NETVisual

J# .NET

CompilerCompiler

MSILMSIL

Visual Studio .NET

Class

Loader

Class

Loader

Common

Language Runtime

CLR

Common

Language Runtime

CLR

.NET Framework

La

de

n v

om

File

syst

em

od

er

üb

er

da

s N

etz

Java

ByteCodes

Java

ByteCodes

Visual BaiscVisual Baisc C#C#

CompilerCompilerCompilerCompiler

MSIL: Microsoft Inrtermediate Language

JUMP: Java User Migration Path (to Microsoft .NET)

- Nur Sprache

- Keine Unterstützung für API´s wie RMI

JUMP

Converter

JUMP

Converter

Ca. 20 Sprachen

Page 7: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 7

Verteilte Verarbeitung mit JavaVerteilte Verarbeitung mit Java

Page 8: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 8

Verteilte Verarbeitung mit JavaVerteilte 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 basiertVerteilung im LAN

• Fall 3: Hauptteil der Anwendung Java basiertVerteilung im LANAnwendungsteile in anderen Sprachen

• Fall 4: Verteilung Java Anwendung im WebOption der Integration mit anderen Sprachen

Page 9: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 9

CORBACORBA

Object Request Broker (ORB)

ServerServer

Server SkeletonServer Skeleton

ClientClient

Client StubClient Stub

Generiert aus Interface

beschrieben in IDL

Client und Server können• in beliebigen• auch unterschiedlichenSprachen geschrieben sein

CORBA/IDL sorgt für Mapping der Interfaces

Page 10: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 10

CORBA; Client in JavaCORBA; Client in Java

Object Request Broker (ORB)

Serverbel. Sprache

Serverbel. Sprache

Server SkeletonServer Skeleton

ClientJava

ClientJava

Client StubClient Stub

Generiert aus Interface

beschrieben in IDL

• Standardfall für CORBA• Interface in IDL notwendig• Client Stub für Java geniert aus IDL

Page 11: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 11

CORBA; Server in JavaCORBA; Server in Java

Object Request Broker (ORB)

ServerJava

ServerJava

Server SkeletonServer Skeleton

Clientbel. Sprache

Clientbel. Sprache

Client StubClient Stub

Generiert aus Interface

beschrieben in IDL

• Standardfall für CORBA• Interface in IDL notwendig; generiert aus Java• Server Skeleton für Java geniert aus IDL

Generiert aus Interface in

Java

Generiert aus Interface in

Java

Page 12: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 12

CORBA über InternetCORBA über Internet

ORB-1

ClientClient

Client StubClient Stub

Generiert aus Interface

beschrieben in IDL

Client und Server können• in beliebigen• auch unterschiedlichenSprachen geschrieben sein

CORBA/IDL sorgt für Mapping der Interfaces

ServerServer

Server SkeletonServer Skeleton

Generiert aus Interface

beschrieben in IDL

ORB-2IIOP

IIOP – Internet Inter-ORB Protocol

Page 13: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 13

Verteilte Verarbeitung mit JavaVerteilte 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 basiertVerteilung im LAN

• Fall 3: Hauptteil der Anwendung Java basiertVerteilung im LANAnwendungsteile in anderen Sprachen

• Fall 4: Verteilung Java Anwendung im WebOption der Integration mit anderen Sprachen

Page 14: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 14

RMI – Remote Method InvocationRMI – Remote Method Invocation

Java 2 Platform Standard Edition (J2SE)

Server(Java)

Server(Java)

Server SkeletonServer Skeleton

Client(Java)

Client(Java)

Client StubClient Stub

• 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

Page 15: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 15

Verteilte Verarbeitung mit Java (Beispiel)Verteilte Verarbeitung mit Java (Beispiel)

AppletApplet

HTTP

Application Server

RMI

Web Browser

Web Server

EJBEJB

DBDB

File SystemFile System

Lädt Applet

RemoteMethod

Invocation

RemoteMethod

Invocation

Page 16: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 16

Verteilte Verarbeitung mit JavaVerteilte Verarbeitung mit Java

• Fall 1: Nutzung von Java in normaler CORBA Anwendung

• Fall 2: Anwendung Java basiertVerteilung im LAN

• Fall 3: Hauptteil der Anwendung Java basiertVerteilung im LANAnwendungsteile 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 WebOption der Integration mit anderen Sprachen

Page 17: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 17

Verteilte Verarbeitung mit JavaVerteilte Verarbeitung mit Java

• Fall 1: Nutzung von Java in normaler CORBA Anwendung

• Fall 2: Anwendung Java basiertVerteilung im LAN

• Fall 3: Hauptteil der Anwendung Java basiertVerteilung im LANAnwendungsteile in anderen Sprachen

• Fall 4: Verteilung Java Anwendung im WebOption der Integration mit anderen Sprachen

– Java Plattform mit IIOP Option

– Kombination Java Plattform mit anderen Sprachen

Page 18: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 18

RMI über IIOPRMI über IIOP

Server(Java)

Server(Java)

Server SkeletonServer Skeleton

Client(Java)

Client(Java)

Client StubClient Stub

• Wie Standard RMI• Benutzung des IIOP Protokolls• Damit Verteilung über das Internet

IIOPJ2SE J2SE

Page 19: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 19

Verteilte Verarbeitung mit RMI über IIOP (Beispiel)Verteilte Verarbeitung mit RMI über IIOP (Beispiel)

AppletApplet

HTTP

Application Server

Web Browser

Web Server

EJBEJB

DBDB

File SystemFile System

Lädt Applet

RMI über IIOP

Nur Java zu JavaNur Java zu Java

InternetInter-ORBProtocol

InternetInter-ORBProtocol

Page 20: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 20

Kooperation RMI und CORBA (Java Client)Kooperation RMI und CORBA (Java Client)

Client(Java)

Client(Java)

Client StubClient Stub

• 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

IIOPJ2SE

Server(bel. Sprache)

Server(bel. Sprache)

Server SkeletonServer Skeleton

Generiert aus Interface

beschrieben in IDL

ORB

Page 21: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 21

Verteilte Verarbeitung mit CORBA (Beispiel)Verteilte Verarbeitung mit CORBA (Beispiel)

AppletApplet

HTTP

Web Browser

Web Server

DBDB

File SystemFile System

Lädt Applet

IIOP

Object Request BrokerObject Request Broker

JavaJava C++C++ Andere SprachenAndere Sprachen

• IIOP – Kommunikationzwischen J2SE und ORBs verschiedener Hersteller

• Einbindung unterschiedl.Sprachen möglich

• IIOP – Kommunikationzwischen J2SE und ORBs verschiedener Hersteller

• Einbindung unterschiedl.Sprachen möglich

Page 22: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 22

Kooperation RMI und CORBA (Java Server)Kooperation RMI und CORBA (Java Server)

Client(bel. Sprache)

Client(bel. Sprache)

Client StubClient Stub

• 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

IIOPORB

Server(Java)

Server(Java)

Server SkeletonServer Skeleton

Generiert aus Interface

beschrieben in IDL

J2SE

Page 23: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 23

Vorteile RMI gegenüber RPC und CORBAVorteile 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

Page 24: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 24

Java 2 Platform, Enterprise Edition; ÜbersichtJava 2 Platform, Enterprise Edition; Übersicht

Page 25: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 25

Java 2 Platform, Enterprise EditionJava 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

Page 26: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 26

J2EE Stufen ArchitekturJ2EE Stufen Architektur

Web Browserfat Client

Client Container

Appl. Client HTML Applet

Tiers

Web

Client

Web Container

JSP Servlets

BusinessEJB Container

Entity EJB´s Message-Driven EJB´sSession EJB´s

EnterpriseInformation

System

Database ERP Systems Legacy Systems

J2EE Platform

J2E

E S

erve

r

Application Component

J2EE Container J2EE Platform

Page 27: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 27

J2EEJ2EE

• 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

Page 28: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 28

J2EE API´s (1)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

Page 29: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 29

J2EE API´s (2)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)

Page 30: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 30

ReferenzarchitekturReferenzarchitektur

Con

tent

Man

agem

ent

Con

tent

Man

agem

ent

Pro

zess

-Man

agem

ent

Pro

zess

-Man

agem

ent

FirewallHTTPLAN

Tra

nsak

tions

-Man

agem

ent

Tra

nsak

tions

-Man

agem

ent

Mes

sagi

ng S

ervi

ces

Mes

sagi

ng S

ervi

ces

Portal ServerPortal Server

Benutzer-SchnittstellenKomponenten

Benutzer-SchnittstellenKomponenten

BusinessKomponenten

BusinessKomponenten

Datenbank-ZugriffeDatenbank-Zugriffe

DatenbankenDatenbankenIn

tegr

atio

nsS

ervi

ces

Inte

grat

ions

Ser

vice

sV

erze

ichn

isS

chni

ttste

llen

Ver

zeic

hnis

Sch

nitts

telle

n

VerzeichnisServices

VerzeichnisServices

GeschäftsPartner

GeschäftsPartner

ERP SystemeERP Systeme

Alt-Anwend.Alt-Anwend.

DatenbankenDatenbanken

Sic

herh

eit

Sic

herh

eit

Page 31: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 31

Referenzarchitektur mit J2EE KomponentenReferenzarchitektur mit J2EE Komponenten

Con

tent

Man

agem

ent

Con

tent

Man

agem

ent

Pro

zess

-Man

agem

ent

Pro

zess

-Man

agem

ent

FirewallHTTPLAN

JTA

JTA

JMS

- J

avaM

ail

JMS

- J

avaM

ail

Portal ServerPortal Server

JSPServlet

JSPServlet

Enterprise JavaBeansJAXP

Enterprise JavaBeansJAXP

JDBC APIJDBC API

DatenbankenDatenbankenJC

AW

ebS

ervi

ces

JCA

Web

Ser

vice

sJN

DI

JND

I VerzeichnisServices

VerzeichnisServices

GeschäftsPartner

GeschäftsPartner

ERP SystemeERP Systeme

Alt-Anwend.Alt-Anwend.

DatenbankenDatenbanken

JAA

SJA

AS

Blaue Schrift in gestreiften Boxenkennzeichnen Komponenten der J2EE Definition

Page 32: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 32

Java 2 Platform, Enterprise EditionJava 2 Platform, Enterprise Edition

DetailsDetails

Christian Menk

Software Architektur Berater

Softlab GmbH

Page 33: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 33

J2EE im DetailJ2EE 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)

Page 34: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 34

Java Servlet APIJava 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

Page 35: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 35

Java Servlet API 2Java Servlet API 2

HTTP ServerHTTP Server

Java VMJava VM

HTTPServlet

doGet(HttpServletRequest request,

HttpServletResponse response);

doPost(HttpServletRequest request,

HttpServletResponse response);

HTTPServlet

doGet(HttpServletRequest request,

HttpServletResponse response);

doPost(HttpServletRequest request,

HttpServletResponse response);

HTTPServlet

doGet(HttpServletRequest request,

HttpServletResponse response);

doPost(HttpServletRequest request,

HttpServletResponse response);

Page 36: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 36

Java Servlet API 3Java Servlet API 3

HTTP ServerHTTP Server

Java VMJava VM

HTTPServletHTTPServlet

HTTPServletHTTPServlet

thread

CGI ProcessCGI Process

CGI ProcessCGI Process

CGI ProcessCGI Process

CGI ProcessCGI Process

requestrequest

requestrequest

requestrequest

requestrequest

Page 37: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 37

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

}

...

Page 38: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 38

Java Server Pages (JSP)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)

Page 39: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 39

Java Server Pages (JSP) 2Java Server Pages (JSP) 2

HTTP ServerHTTP Server

Java VM + JSP EngineJava VM + JSP Engine

JSP Seiten

(HTML+JAVA)

HTTPServlet

1:request 1

Servlet

Source

2:lädt 3:erzeugt

4:Kompiliert und lädt

5:response

6:request 2-n 5:response

Page 40: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 40

JSP BeispielJSP Beispiel

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

<jsp:useBean id="ordering" scope="session" class="com.bmw.ivs.jsp.OrderBean" />

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

Page 41: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 41

Java Authentiction and Authorization ServiceJava Authentiction and Authorization Service ( (JAAS)JAAS)

•Standard erweiterung der Java 2 Plattform

• Authentifizierungs-Framework

• Pluggable authentication

• User basierte Autorisierung

Application

Login Context API

LoginModul

Kerberos Smart Card Biometric

Konfig.

Page 42: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 42

Java Authentiction and Authorization ServiceJava Authentiction and Authorization Service ( (JAAS) 2JAAS) 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";}

Page 43: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 43

Java Naming and Directory Interface (JNDI)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.

Page 44: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 44

Java Naming and Directory Interface (JNDI) 2Java Naming and Directory Interface (JNDI) 2

Java Application

LDAP Directory

JNDI

EJB Store

LookupLookup Lookup

User

Role

User

RoleUser

a.java

src

b.java

docTut.txt

EJB Home A

EJB Home B

EJB Home C

EJB

Servlet

Page 45: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 45

Java Remote Method Invocation RMIJava 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.

Page 46: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 46

Java Remote Method Invocation RMI AblaufJava Remote Method Invocation RMI Ablauf

Java VMJava VMJava VMJava VM

•Netz

JNDI

Java Applikation

Java Object

Skeleton

Stub

Stub

1: lookup

2: get

3: call

4: call Skeleton

7: result to Stub

5: call OBJ6: return result

8: result

Page 47: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 47

Java Remote Method Invocation RMI over IIOPJava 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.

Page 48: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 48

Enterprise Java Beans was ist das ?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.

Page 49: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 49

Enterprise Java Beans PrinzipEnterprise Java Beans Prinzip

EJB ContainerEJB Container

JNDI...MyBeanHome...

JNDI...MyBeanHome...

Client...lookUp

create or find on EJB Home OBJ

cast to EJB remote OBJ

invoke Method...

Client...lookUp

create or find on EJB Home OBJ

cast to EJB remote OBJ

invoke Method...

EJB OBJ

Remote StubServer Skeleton

1

2

3c

4

6

3b

3a

7

8

5

9

Page 50: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 50

Enterprise Java Beans aus Client SichtEnterprise 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){

}

Page 51: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 51

Enterprise Java Beans Deployment 1Enterprise 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>

Page 52: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 52

Enterprise Java Beans Deployment 1Enterprise 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>

Page 53: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 53

Pool Pool

Enterprise Java Beans Session BeansEnterprise Java Beans Session Beans

Statefull Session

Bean

Es existieren zwei Arten von Session Beans:

•Statefull: sind einer Session zugeordnet und speichern Informationenvon einem Aufruf zum nächsten.

•Stateless: sind keiner Session zugeordnet innerhalb der Session Bean dürfen keine Informationen gespeichert werden.

Stateless Session

BeanStateless Session

BeanStateless Session

BeanStateless Session

Bean

Statefull Session

BeanStatefull Session

BeanStatefull Session

BeanStatefull Session

Bean

Client Zeit Client Zeit

Page 54: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 54

EJB Container

Enterprise Java Beans Entity BeansEnterprise 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

CMP Entity

SetA(newA)

BMP Entity

DB

Store newA to DB

Set newA

SetA(newA) Set newA

and Store

Store newA to DB

Page 55: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 55

Enterprise Java Beans Message BeansEnterprise Java Beans Message Beans

Page 56: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 56

Enterprise Java Beans Message Beans 2Enterprise Java Beans Message Beans 2

EJB Container

CMP Entity

Message Bean

onMessage

JMS Provider

Stateless

Sessionbean

InteractionInteraction

Page 57: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 57

Java Database Connectivity (JDBC)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-Bridge2. plattformeigene JDBC-Treiber3. universelle JDBC-Treiber4. direkte JDBC-Treiber

Page 58: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 58

Java Database Connectivity 2 (JDBC)Java Database Connectivity 2 (JDBC)

Ablauf der Kommunikation mit einer JDBC DB

Java VMJava VM

DB

Connection

PreparedStatement

Statement

ResultSet

Ablauf D

B K

omm

unikation

erzeugen

erzeugen

ausführen

auswerten

Wird in DB

gespeichert

ausführen

Ergebnis

Page 59: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 59

Java Message Service (JMS)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

Page 60: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 60

Java Message Service (JMS) 2Java Message Service (JMS) 2

Queue

A

B

C

JMS Sender

A

C

B

JMS Empfänger

JMS Provider

A

B

C

JMS Sender

A,B,C

A,B,C

A,B,C

JMS Empfänger

JMS Provider

TOPIC

Publish - Subscribe

Point to Point

DB

DB

Page 61: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 61

Java Transaction API und ServiceJava 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. 

Page 62: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 62

Java Transaction API (JTA)Java Transaction API (JTA)

Page 63: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 63

Java Transaction Service (JTS)Java Transaction Service (JTS)

Page 64: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 64

Java MailJava 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.

Page 65: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 65

Java Mail Beispiel Java Mail Beispiel

Store

Folder A

Folder C Folder C

Message 1 Message 1

getFolder(„A“)

getFolder(„C“)

getMessage(1)

Transport

Session

Page 66: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 66

Applikation Server

Container Services

Java Connector ArchitectureJava Connector Architecture

Ressource Adapter

Enterprise System Interface

Connection ManagerTransaction Manager

Security Manager

System Contract

EJB Appl.Container-Component Contract

Behandelt Connection, Transaction und Security Management zwischen Appserver und Enterprise System

Ist Schnittstelle für Applications-Komponenten

Page 67: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 67

Java Native Interface (JNI)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.

Page 68: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 68

Client ServerClient Server

Client

Rich Client Application

DB-System

UI

- O

bjec

t

UI

- O

bjec

t

UI

- O

bjec

t

UI

- O

bjec

t

UI

- O

bjec

t

UI

- O

bjec

t

Con

trol

er -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

Con

trol

er -

O

bjec

t

Con

trol

er -

O

bjec

tC

ontr

oler

-

Obj

ect

FA

T B

O -

O

bjec

tF

AT

BO

-

Obj

ect

FA

T B

O -

O

bjec

tF

AT

BO

-

Obj

ect

BO

- F

acto

ry

Page 69: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 69

Client ServerClient Server

Client

Rich Client Application

DB-System

UI

- O

bjec

t

UI

- O

bjec

t

UI

- O

bjec

t

UI

- O

bjec

t

UI

- O

bjec

t

UI

- O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

-

Obj

ect

‚thin

‘ BO

-

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

-

Obj

ect

‚Thi

n‘ B

O -

O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Page 70: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 70

Client Server - und jetzt werden es viele Client Server - und jetzt werden es viele

DB-System

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Client

Rich Client Application

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

UI -

O

bjec

t

BO

- O

bjec

tB

O -

Obj

ect

BO

- O

bjec

tB

O -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚th

in‘ B

O -

Obj

ect

BO

- F

acto

ry

Com

man

d -

Obj

ect

‚thin

‘ BO

- O

bjec

t‚T

hin‘

BO

- O

bjec

t

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Com

man

d -

Obj

ect

Am BSP JABBA:

während einer JABBA Sitzung werden

ca 280 Command Objekte und BO Objekte plus 20 View ObjekteSpeicherbedarf: ca 6 MB (laut Optimize)

wenn Jabba von 1.000 Benutzern gleichzeitig benutzt würde

ca 280.000 Command und BO Objekte !!Speicherbedarf: über 5 Gigabyte

Page 71: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 71

Client

Client

Client

Client

Was macht WEB basierte Systeme komplexWas macht WEB basierte Systeme komplex

Applikation Server

WEB Container

EJB Container

Client

Client

Client

ClientBackendsysteme

Mainframe

Besands- führung I

Callcenter

...

Enterprise Applikation

Enterprise Applikation

Enterprise Applikation

DB

Page 72: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 72

Persistente Daten

EJB Conteiner

Web ContainerServlet - Engine

Web Server

Web Browser

Ein WEB Hit aus J2EE Sicht Ein WEB Hit aus J2EE Sicht

KLICKoder

ENTER

Browserschickt request

Server empfängt request

Servlet Engine sucht JSP/ erzeugt

einen Thread

JSP benutzt

JSP Bean

JSP Bean benutzt EJB home und

remote Methoden

Session EJB führt Businessmethoden aus

Entity EJB repräsentieren BO‘s

RDBMS und/oder Persistence Schicht System liefern BO Daten

Session EJB liefert Ergebnis an JSP Bean

JSP bildet Ergebnis in HTML ab

Server sendet HTML zum

Browser

Browser rendert HTML

Ergebnis

Page 73: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 73

Things to Things to considerconsider with J2EE with J2EE (and any other distributed Obj System)(and any other distributed Obj System)

• Architektur• Transaktionsmodel• Objekt Zustand und Verteilung• Objekt Identität• Skalierung des Systems• O/R mapping

Page 74: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 74

J2EE - Architektur - J2EE SchichtenJ2EE - Architektur - J2EE Schichten

Enterprise A

pplicationClient Server

J2EE Containr (JSP/Servlet/...) EJB Container DB

Presentation

Renders HTMLContent

Field - Syntax Validation

Application

Invokes services

Maintain conversational

state

Page flow

Service

Object Distribution

Use case control

Transaction control

Domain

Businessbehavior

SemanticValidation

Persistence

Basic CRUDservices

O7R mapping

Transaction support

Domain Objectsor Object State

Domain Objectsor Entity Beans

Application Objectsand Domain Object State

Simple DataTypes

Page 75: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 75

J2EE - Architektur - Service ArchitekturJ2EE - Architektur - Service Architektur

JSP/Servlet Client

Java Client

Account Services

Order Services

Rechnungs Services

Application Objecte

Domain Objecte

Domain Model

System verhaltens und Domain Grenze

Page 76: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 76

J2EE - Transaktionsmodel 1J2EE - 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.

Page 77: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 77

J2EE - Transaktionsmodel 2J2EE - Transaktionsmodel 2

Write-Write Conflicts kennen wir:

Write-Write Conflict Erkennung

Account Services

getAccountgetAccount

Zeit

2000+1000

2000+1000

2000,003000,00 4000,00

•Timestamps •Counters •State comparison

Page 78: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 78

J2EE - Objekt Zustand und Verteilung 1J2EE - Objekt Zustand und Verteilung 1

Das Problem mit der Serialisierung:Transitive Menge Gewünschte Menge

Person

Adresse

Stadt

Verzeichnis der Städte

Andere Daten

Remote Objekt Referenz und Serialisierung Remote Objekt Referenzen

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.

Page 79: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 79

J2EE - Objekt Zustand und Verteilung 2J2EE - Objekt Zustand und Verteilung 2

Account ServicesService Client

MethodenAufruf

StateHolder

Return Wert

Domain Model

Page 80: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 80

J2EE - Objekt Zustand und Verteilung 3J2EE - Objekt Zustand und Verteilung 3

•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.

Guide für Objekt Verteilung:

Page 81: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 81

J2EE - Skalierung des Systems 1J2EE - Skalierung des Systems 1

Stateful versus Stateless Session Beans

Entity Beans versus Java Classes

Stateless Beans können von vielen Sessions benutzt werden aber Session Status Informationen müssen irgend wo anders abgelegt werden.

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.

Page 82: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 82

J2EE - Skalierung des Systems 2J2EE - Skalierung des Systems 2

JSPs and JSP Beans

Connection Pooling

Große Ergebnismengen

JSP‘s und JSP Beans sind, neben der HTTP Session eine Ort wo Session Status Informationen gespeichert werden können.

Verbindungen zur Datenbank sind eine ‚teuere‘ Ressource, dieam besten zu 100 % genutzt werden sollte. Deshalb sollte sie vielen Clients zur Verfügung stehen. Ist nur in Verbindung mitdem Model der kurzen Transaktionen möglich.

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.

Page 83: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 83

J2EE - O/R mapping 1J2EE - O/R mapping 1

Objekt Dirtiness

Objekt Identität

Die Persistenzschicht muß in der Lage sein jede Änderung in einem Objekt zu erkennen um diese Persistent zu machen.

Oder wer gehört zu wem. Insb. Mit State Objekten ein Problem.

A

C

B

C

BA

C=??

Page 84: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 84

J2EE - O/R mapping 2J2EE - 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.

Page 85: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 85Directory Server

Message oriented Middleware

Backendsysteme

Besands- führung I

Client I*Net

WEB Container

Besands- führung II

The BIG PictureThe BIG Picture

KundenEJB Container

MAILSERVER

WAPGateway

Portal

One to OneMarketingSystem

Connector‘s

Connector‘s

Connector‘s

...

UseCase

UseCase

JSP/ServletBrowser + JavaScript

WAP Mobil - Device

EMailClient

Besands- führung I

Callcenter

...

Connector’s

UseCase

UseCase

I*Net DB

Con

tent

M

anag

emen

t/ W

eb

Aut

hori

ng

Connector’sConnector’s

Ser

vice

Bro

ker

Page 86: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 86Directory Server

J2EE Schichten - in der i*Net PlattformJ2EE Schichten - in der i*Net Plattform

Message oriented Middleware

Backendsysteme

Besands- führung I

Client I*Net

WEB Container

Besands- führung II

KundenEJB Container

MAILSERVER

WAPGateway

Portal

One to OneMarketingSystem

Connector‘s

Connector‘s

Connector‘s

...

UseCase

UseCase

JSP/ServletBrowser + JavaScript

WAP Mobil - Device

EMailClient

Besands- führung I

Callcenter

...

Connector’s

UseCase

UseCase

I*Net DB

Ser

vice

Bro

ker

Connector’sConnector’s

Pre

sent

atio

n

Per

sist

ence

Con

tent

M

anag

emen

t/ W

eb

Aut

hori

ng

Ent

erpr

ise

App

licat

ione

n

App

licat

ion

Dom

ain

Domain

Ser

vice

Page 87: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 87

WEB Container

One to One Marketing System / PortalOne to One Marketing System / Portal

Portal

One to OneMarketingSystem

• 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

Mögliche Produkte:

Portal

One to OneMarketingSystem

Page 88: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 88

Contentmanagament System/Contentmanagament System/Web AuthoringWeb Authoring

WEB Container

Con

tent

M

anag

emen

t/ W

eb

Aut

hori

ng

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 Designentlang zu seinen neuen Seiten.

Page 89: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 89

WEBContainer

Webanwendungen in der i*Net PlattformWebanwendungen in der i*Net Plattform

JSP/Servlet

WEB Anwendungen innerhalb der i*NET Plattform bilden das Model View Controller Pattern ab.

Browser

ViewJSP

ControllerServlet

UseCase OBJ

dispatch

Request forward

get Data

Model(EJB‘s)

POST request

Contentmanagament

get Content

GET respons

Page 90: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 90

Service BrokerService Broker

EJB Container

Ser

vice

Bro

ker

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

XML dispatch

Page 91: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 91

UseCaseUseCase

EJB Container

UseCase

Ein ‚Usecase‘ ist hier ein Teil einerSzenario Implementierung. Er stellt die für die Durchführung eines Szenarios nötigen Funktionenzur 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).

Page 92: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 92

EJB Container

UseCase/„Szenario“

UseCase

UseCase/Szenario - genauer betrachtetUseCase/Szenario - genauer betrachtet

Szenario Logik

Sze

nario

Inf

erfa

ce O

bjec

t

Entity Logik

Ent

ity

Obj

ect

Ent

ity

Obj

ect

Ent

ity

Obj

ect

Prozeß Logik

Bus

ines

s ac

tivity

O

bjec

t

Bus

ines

s ac

tivity

O

bjec

t

Bus

ines

s ac

tivity

O

bjec

t

Bus

ines

s ac

tivity

O

bjec

t

Bus

ines

s ac

tivity

O

bjec

t

Page 93: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 93Directory Server

Basis- / BackendsystemeBasis- / Backendsysteme

Backendsysteme

Besands- führung I

Besands- führung II

Kunden

Connector‘s

Connector‘s

Connector‘s

Besands- führung I

Callcenter

...

Connector’s I*Net DB

Message oriented Middleware

Connector’s

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.

Page 94: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 94

Szenario 1 in der VisionSzenario 1 in der Vision

BackendsystemeInteressent I*Net

WEB Container Kunden

EJB Container

JSP/Servlet

Tarifengine

I*Net DB

ContolerServlet

Tarif INFOView

getTarifInfo

createInteressent

createInfoRequest

Con

tent

M

anag

emen

t

Ser

vice

Bro

ker

Szenario 1

getTarifInfo

MAILSERVER A

AP

Info

Re

que

stIn

tere

ssen

t

postEMAIL

getMailVorl

getAAP

createInfoRequest

createInteressent

getTarifInfo

AAP

Browser + JavaScript

EMailClient

EMailClient

Browser + JavaScript

post TARIF FORM

(XML) Service requgetTarifInfo

getTarifInfo

CICS/MQS/JNI/...

respons

data (XML)

content (XML)

Respons TARIFINFO

createInfoRequest

AAP SYS

Page 95: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 95

Szenario 1 in der VisionSzenario 1 in der Vision

BackendsystemeInteressent I*Net

WEB Container Kunden

EJB Container

JSP/Servlet

Tarifengine

I*Net DB

ContolerServlet

Tarif INFOView

getTarifInfo

createInteressent

createInfoRequest

Con

tent

M

anag

emen

t

Ser

vice

Bro

ker

Szenario 1

getTarifInfo

createInfoRequest

MAILSERVER A

AP

Info

Re

que

stIn

tere

ssen

t

postEMAIL

getMailVorl

getAAP

createInfoRequest

createInteressent

getTarifInfo

AAP

Browser + JavaScript

EMailClient

EMailClient

Browser + JavaScript

post Info request (XML) Service requ

data (XML)

content (XML)

Respons Info request

createInfoRequest

createInteressent

createInfoRequest

getAAP

getMailVorl

postEMAILJavaMail API

Info + Vorlage

Inte

ress

ent

Info

Re

que

stA

AP

AAP SYS

Page 96: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 96Timed Service

Szenario 3 in der VisionSzenario 3 in der Vision

BackendsystemeKunde I*Net

WEB Container Kunden

EJB Container

MAILSERVER

Portal

One to OneMarketingSystem

JSP/Servlet

Workflow

I*Net DB

Con

tent

M

anag

emen

t/ W

eb

Aut

hori

ng

Ser

vice

Bro

ker

Kun

de

AA

P AAP SYS

getVorgStatus

(XML) Service requ Workflow Connector

getKundeSzenario 3

getVorgInfo

createAkquiHint

getVorgInfo

getKunde Kun

de

Workflow Connectordata (XML)

content (XML)

getTracinkData

postEMAIL

getMailVorl

getAAP

getVorgang

getVorgang

AAP

Browser + JavaScript

EMailClient

EMailClient

Browser + JavaScript

post Info request

Respons VorgangStat

Logon + session MM

Page 97: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 97

Szenario 3 in der VisionSzenario 3 in der Vision

BackendsystemeKunde I*Net

WEB Container Kunden

EJB Container

MAILSERVER

Portal

One to OneMarketingSystem

JSP/Servlet

Workflow

I*Net DB

Con

tent

M

anag

emen

t/ W

eb

Aut

hori

ng

Ser

vice

Bro

ker

Kun

de

AA

P AAP SYS

getVorgStatus

Workflow Connector

getKunde

Timed Service

Szenario 3

getVorgInfo

createAkquiHint

Kun

de

getTracinkData

postEMAIL

getMailVorl

getAAP

getVorgang

Tracking Infonach

Business Rules

Tracking Infonach

Business Rules

Timed Service

getTracinkData

createAkquiHint

getAAP

getMailVorl

postEMAIL

AAP

Browser + JavaScript

EMailClient

EMailClient

Browser + JavaScript

JavaMail APIInfo + Vorlage

create WebPage

Vo

rlag

e +

Lin

k

Logon + session MM SURFT

Page 98: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 98

Szenario 3 in der Vision (Variante)Szenario 3 in der Vision (Variante)

BackendsystemeKunde I*Net

WEB Container Kunden

EJB Container

MAILSERVER

Portal

One to OneMarketingSystem

JSP/Servlet

Workflow

I*Net DB

Con

tent

M

anag

emen

t/ W

eb

Aut

hori

ng

Ser

vice

Bro

ker

Kun

de

AA

P AAP SYS

getVorgStatus

Workflow Connector

getKunde

Timed Service

Szenario 3

getVorgInfo

createHintEMail

Kun

de

getTracinkData

postEMAIL

getMailVorl

getAAP

getVorgang

Tracking Info

Tracking Info

Timed Service

getTracinkData

createHintEMail

getAAP

getMailVorl

postEMAIL

AAP

Browser + JavaScript

EMailClient

EMailClient

Browser + JavaScript SURFT

JavaMail APIInfo

create WebPage

Info Mail mit Link

requ

Page 99: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 99

Wichtige Kriterien für die i*Net PlattformWichtige 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

Page 100: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 100

XML und PerformanceXML und Performance

0

500

1000

1500

2000

2500

3000

3500

4000

Aufrufen

Mil

lisec

serobj mit 3 Param

XML mit 3 Param

serobj 6 Param

XML 6 Param

serobj 9 Param

XML 9 Param

Page 101: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 101

Portal

One to OneMarketingSystem

Content Manage-

ment

Connector

Service Broker

Ergebnisse der i*Net Plattform 1Ergebnisse der i*Net Plattform 1

UseCase/„Szenario“

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 SystemEinrichtung der Business Rule Umgebung(Event System)

Page 102: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 102

Ergebnisse der i*Net Plattform 2Ergebnisse der i*Net Plattform 2

Directory Server

Message oriented Middleware

Einrichten der Plattform Message Threads Standard Connectoren

Einrichten der Plattform Struktur Standard Connectoren

Page 103: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 103

Things to keep in mind 1Things 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)

Page 104: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 104

Things to keep in mind 2Things 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 ?

Page 105: Rolle von Java Verteilte Verarbeitung mit Java J2EE Übersicht J2EE Details

Architekturen von Web-Anwendungen, LMU, WS-01/02 Folie 105

Things to keep in mind 3Things 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