Rolle von Java Verteilte Verarbeitung mit Java J2EE - PowerPoint PPT Presentation

1 / 105
About This Presentation
Title:

Rolle von Java Verteilte Verarbeitung mit Java J2EE

Description:

Rolle von Java Verteilte Verarbeitung mit Java J2EE bersicht J2EE Details – PowerPoint PPT presentation

Number of Views:121
Avg rating:3.0/5.0
Slides: 106
Provided by: G461
Category:

less

Transcript and Presenter's Notes

Title: Rolle von Java Verteilte Verarbeitung mit Java J2EE


1
Rolle von JavaVerteilte Verarbeitung mit
JavaJ2EE ÜbersichtJ2EE Details
2
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)

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

4
Java Entwicklung und Ausführung
Java SourceCodes
Class Loader
Java Compiler
ByteCode Verifier
Laden vom Filesystem oder über das Netz
Just in Time Compiler
Java ByteCodes
Java Virtual Machine
Java Developers Kit IDEs
Binary Code
IDE Integrated Development Environment z.B.
JBuilder von Borland
Java Platform
5
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 APIs 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

6
Java in .NET (JUMP)
Ca. 20 Sprachen
Class Loader
Visual J .NET
Visual Baisc
C
Compiler
Compiler
Compiler
Laden vom Filesystem oder über das Netz
Common Language Runtime CLR
MSIL
JUMP Converter
Java ByteCodes
Visual Studio .NET
.NET Framework
MSIL Microsoft Inrtermediate Language JUMP Java
User Migration Path (to Microsoft .NET) - Nur
Sprache - Keine Unterstützung für APIs wie RMI
7
Verteilte Verarbeitung mit Java
8
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

9
CORBA
Generiert aus Interface beschrieben in IDL
Server
Client
Server Skeleton
Client Stub
Object Request Broker (ORB)
  • Client und Server können
  • in beliebigen
  • auch unterschiedlichen
  • Sprachen geschrieben sein

CORBA/IDL sorgt für Mapping der Interfaces
10
CORBA Client in Java
Generiert aus Interface beschrieben in IDL
Server bel. Sprache
Client Java
Server Skeleton
Client Stub
Object Request Broker (ORB)
  • Standardfall für CORBA
  • Interface in IDL notwendig
  • Client Stub für Java geniert aus IDL

11
CORBA Server in Java
Generiert aus Interface in Java
Generiert aus Interface beschrieben in IDL
Server Java
Client bel. Sprache
Server Skeleton
Client Stub
Object Request Broker (ORB)
  • Standardfall für CORBA
  • Interface in IDL notwendig generiert aus Java
  • Server Skeleton für Java geniert aus IDL

12
CORBA über Internet
Generiert aus Interface beschrieben in IDL
Generiert aus Interface beschrieben in IDL
Client
Server
Client Stub
Server Skeleton
ORB-1
ORB-2
  • Client und Server können
  • in beliebigen
  • auch unterschiedlichen
  • Sprachen geschrieben sein

CORBA/IDL sorgt für Mapping der Interfaces
IIOP Internet Inter-ORB Protocol
13
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

14
RMI Remote Method Invocation
Server (Java)
Client (Java)
Server Skeleton
Client Stub
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

15
Verteilte Verarbeitung mit Java (Beispiel)
Web Browser
Applet
Lädt Applet
HTTP
RMI
Remote Method Invocation
Web Server
EJB
File System
Application Server
DB
16
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

17
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

18
RMI über IIOP
Server (Java)
Client (Java)
Server Skeleton
Client Stub
  • Wie Standard RMI
  • Benutzung des IIOP Protokolls
  • Damit Verteilung über das Internet

19
Verteilte Verarbeitung mit RMI über IIOP
(Beispiel)
Web Browser
Internet Inter-ORB Protocol
Applet
Lädt Applet
HTTP
RMI über IIOP
Web Server
Nur Java zu Java
EJB
File System
Application Server
DB
20
Kooperation RMI und CORBA (Java Client)
Generiert aus Interface beschrieben in IDL
Client (Java)
Server (bel. Sprache)
Client Stub
Server Skeleton
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

21
Verteilte Verarbeitung mit CORBA (Beispiel)
Web Browser
Applet
Lädt Applet
HTTP
  • IIOP Kommunikationzwischen J2SE und ORBs
    verschiedener Hersteller
  • Einbindung unterschiedl.Sprachen möglich

IIOP
Web Server
File System
Object Request Broker
Java
C
Andere Sprachen
DB
22
Kooperation RMI und CORBA (Java Server)
Generiert aus Interface beschrieben in IDL
Client (bel. Sprache)
Server (Java)
Client Stub
Server Skeleton
J2SE
  • Server ist in Java und Client in beliebiger
    Sprache (von CORBA unterstützt) geschrieben
  • Interfacebeschreibung in IDL wird aus Interface
    in Java generiertJ2SE kommuniziert über IIOP mit
    beliebigem ORB
  • Skeleton wird von J2SE (aus Java) und Stub von
    ORB (aus IDL) generiert

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

24
Java 2 Platform, Enterprise Edition Übersicht
25
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

26
J2EE Stufen Architektur
Tiers
fat Client
Web Browser
Client Container
Client
HTML
Applet
Appl. Client
Web Container
J2EE Platform
Web
JSP
Servlets
J2EE Server
EJB Container
Business
Entity EJBs
Message-Driven EJBs
Session EJBs
Enterprise Information System
J2EE Container
J2EE Platform
27
J2EE
  • J2EE Platform Specification
  • APIs
  • 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

28
J2EE APIs (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

29
J2EE APIs (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)

30
Referenzarchitektur
HTTP
LAN
Verzeichnis Services
Geschäfts Partner
Content Management
Messaging Services
Sicherheit
Prozess-Management
Transaktions-Management
ERP Systeme
Alt-Anwend.
Datenbanken
Datenbanken
31
Referenzarchitektur mit J2EE Komponenten
Blaue Schrift in gestreiften Boxen kennzeichnen
Komponenten der J2EE Definition
HTTP
LAN
Portal Server
Verzeichnis Services
JNDI
JSP Servlet
Geschäfts Partner
Content Management
JMS - JavaMail
JAAS
Prozess-Management
JTA
Enterprise JavaBeans JAXP
JCA WebServices
ERP Systeme
JDBC API
Alt-Anwend.
Datenbanken
Datenbanken
32
Java 2 Platform, Enterprise EditionDetails
  • Christian Menk
  • Software Architektur Berater
  • Softlab GmbH

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

34
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

35
Java Servlet API 2
HTTP Server
Java VM
HTTPServlet doGet(HttpServletRequest
request, HttpServletResponse response) doPost(Htt
pServletRequest request, HttpServletResponse
response)
HTTPServlet doGet(HttpServletRequest
request, HttpServletResponse response) doPost(Htt
pServletRequest request, HttpServletResponse
response)
HTTPServlet doGet(HttpServletRequest
request, HttpServletResponse response) doPost(Htt
pServletRequest request, HttpServletResponse
response)
36
Java Servlet API 3
HTTP Server
Java VM
request
HTTPServlet
request
HTTPServlet
request
HTTPServlet
request
HTTPServlet thread
CGI Process
request
CGI Process
request
request
request
CGI Process
CGI Process
37
Servlet Beispiel
private void doGet(HttpServletRequest request,
HttpServletResponse response) try
Enumeration e
request.getParameterNames()
String submitter request.getParameter("SUBMIT
TER") ArrayList
optionsList new ArrayList()
while (e.hasMoreElements())
String id e.nextElement().toSt
ring()
logTO(id "" request.getParameter(id))
HttpSession session
request.getSession()
if (id.equals("model"))
session.putValue("model",requ
est.getParameter(id))
//if (id.equals("color"))
//session.setAttribute("c
olor",request.getParameter(id))
if (submitter!null)
session.putValue("S
UBMITTER",submitter)
...
38
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)

39
Java Server Pages (JSP) 2
HTTP Server
5response
Java VM JSP Engine
1request 1
HTTPServlet
6request 2-n
5response
4Kompiliert und lädt
2lädt
3erzeugt
JSP Seiten (HTMLJAVA)
Servlet Source
40
JSP Beispiel
ltjspuseBean id"ordering" scope"session"
class"com.bmw.ivs.jsp.OrderBean" /gt
ltTR VALIGN"top" ALIGN"left"gt ltTD COLSPAN2
HEIGHT 22gtlt/TDgt ltTD WIDTH56 COLSPAN2gtltINPUT
id"FormularTextfeld1" TYPE"text"
NAME"ho" VALUE"lt request.getParameter("ho")gt
" SIZE7 MAXLENGTH10 gtlt/TDgt ltTDgtlt/TDgt lt/TRgt
ltTR VALIGN"top" ALIGN"left"gt ltTD HEIGHT
24gtlt/TDgt ltTD WIDTH27 COLSPAN2gtltSELECT
id"FormularKombinationsfeld5" NAME"auftragsart"
gt ltoption value"0 ltordering.checkSelection(re
quest,"auftragsart","0")gtgt 0 Kunde
lt/optiongt ltoption value"1 ltordering.checkSele
ction(request,"auftragsart","1")gtgt 1 Lager
lt/optiongt lt/SELECTgtlt/TDgt lt/TRgt
41
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
42
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"
43
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-Ko
    mponenten-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.

44
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
45
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.

46
Java Remote Method Invocation RMI Ablauf
JNDI
Stub
Java VM
Java VM
1 lookup
2 get
Java Applikation
4 call Skeleton
3 call
8 result
  • Netz

Skeleton
5 call OBJ
6 return result
Java Object
Stub
7 result to Stub
47
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.

48
Enterprise Java Beans was ist das ?
  • Enterprise Java Beans (EJB)
  • In EJBs 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.

49
Enterprise Java Beans Prinzip
JNDI...MyBeanHome...
1
EJB Container
Client...lookUpcreate or find on EJB Home
OBJcast to EJB remote OBJinvoke Method...
3a
2
EJB OBJ
3c
3b
6
Remote Stub
Server Skeleton
5
4
7
9
8
50
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") properti
es.put(Context.PROVIDER_URL, "t3//localhost7301"
) properties.put(Context.SECURITY_PRINCIPAL,
user) properties.put(Context.SECURITY_CREDENTIA
LS, 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 OrderEntryEnquiryBPrO
Home orderEntryEnquiryBPrOHome
(OrderEntryEnquiryBPrOHome) PortableRemoteObject.
narrow(ref, OrderEntryEnquiryBPrOHome.class)
OrderEntryEnquiryBPrO orderEntryEnquiryBPrO
createBPro() orderEntryEnquiryBPrO.createOrder(
orderentry) catch (Exception e)
51
Enterprise Java Beans Deployment 1
lt?xml version"1.0"?gt lt!DOCTYPE ejb-jar PUBLIC
'-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 1.1//EN' 'http//java.sun.com/j2ee/dtds/
ejb-jar_1_2.dtd'gt ltejb-jargt ltenterprise-beansgt
ltentitygt ltejb-namegtPurchaseOrderBEOlt/ejb-na
megt lthomegtcom.bmw.ivsr.server.beo.purchaseord
er.PurchaseOrderBEOHomelt/homegt
ltremotegtcom.bmw.ivsr.server.beo.purchaseorder.Purc
haseOrderBEOlt/remotegt ltejb-classgtcom.bmw.ivsr
.server.beo.purchaseorder.PurchaseOrderBEOBeanlt/ej
b-classgt ltpersistence-typegtContainerlt/persist
ence-typegt ltprim-key-classgtcom.bmw.ivsr.serve
r.pk.PurchaseOrderPKlt/prim-key-classgt
ltreentrantgtFalselt/reentrantgt ltcmp-fieldgt
ltfield-namegtpurchase_order_idlt/field-namegt
lt/cmp-fieldgt lt/entitygt lt/enterprise-beansgt
52
Enterprise Java Beans Deployment 1
ltassembly-descriptorgt ltcontainer-transactiongt
ltmethodgt ltejb-namegtManufacturerOrderBEO
lt/ejb-namegt ltmethod-namegtlt/method-namegt
lt/methodgt lttrans-attributegtRequiredlt/trans-attr
ibutegt lt/container-transactiongt
lt/assembly-descriptorgt lt/ejb-jargt
53
Enterprise Java Beans Session Beans
  • 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.

Client Zeit
Client Zeit
Pool
Pool
Statefull Session Bean
Stateless Session Bean
Statefull Session Bean
Stateless Session Bean
Statefull Session Bean
Stateless Session Bean
Statefull Session Bean
Stateless Session Bean
Statefull Session Bean
54
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)
DB
Store newA to DB
Set newA
CMP Entity
SetA(newA)
Set newA and Store
BMP Entity
Store newA to DB
55
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

56
Enterprise Java Beans Message Beans 2
EJB Container
CMP Entity
Stateless Sessionbean
Interaction
Interaction
Message Bean
onMessage
JMS Provider
57
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

58
Java Database Connectivity 2 (JDBC)
Ablauf der Kommunikation mit einer JDBC DB
Java VM
Connection
erzeugen
Ablauf DB Kommunikation
DB
PreparedStatement
erzeugen
Wird in DB gespeichert
Statement
ausführen
ausführen
auswerten
Ergebnis
ResultSet
59
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
60
Java Message Service (JMS) 2
Point to Point
JMS Empfänger
JMS Sender
Queue
A
A
JMS Provider
B
C
C
B
DB
Publish - Subscribe
JMS Empfänger
JMS Sender
A
A,B,C
JMS Provider
TOPIC
B
A,B,C
C
A,B,C
DB
61
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. 

62
Java Transaction API (JTA)
63
Java Transaction Service (JTS)
64
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.

65
Java Mail Beispiel
Session
Store
getFolder(A)
Transport
Folder A
getFolder(C)
Folder C
Folder C
getMessage(1)
Message 1
Message 1
66
Java Connector Architecture
Ist Schnittstelle für Applications-Komponenten
Applikation Server
Container-Component Contract
EJB Appl.
Ressource Adapter
System Contract
Container Services
Connection Manager
Transaction Manager
Enterprise System Interface
Security Manager
Behandelt Connection, Transaction und Security
Management zwischen Appserver und Enterprise
System
67
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.
68
Client Server
Client
DB-System
Rich Client Application
BO - Object
BO - Object
UI - Object
UI - Object
Controler - Object
Controler - Object
FAT BO - Object
FAT BO - Object
BO - Factory
UI - Object
UI - Object
BO - Object
BO - Object
Controler - Object
Controler - Object
FAT BO - Object
FAT BO - Object
UI - Object
UI - Object
69
Client Server
Client
DB-System
Rich Client Application
BO - Object
BO - Object
UI - Object
UI - Object
thin BO - Object
BO - Factory
Thin BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
Command - Object
Command - Object
BO - Object
BO - Object
thin BO - Object
thin BO - Object
Command - Object
Command - Object
UI - Object
UI - Object
70
Client Server - und jetzt werden es viele
DB-System
Am BSP JABBA während einer JABBA Sitzung werden
ca 280 Command Objekte und BO Objekte plus 20
View Objekte Speicherbedarf 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
71
Was macht WEB basierte Systeme komplex
Backendsysteme
Applikation Server
WEB Container
EJB Container
Enterprise Applikation
Client
DB
72
Ein WEB Hit aus J2EE Sicht
Web Browser
KLICK oder ENTER
Web Server
Web Container Servlet - Engine
EJB Conteiner
Persistente Daten
73
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

74
J2EE - Architektur - J2EE Schichten
75
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
76
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.
77
J2EE - Transaktionsmodel 2
Write-Write Conflicts kennen wir
Zeit
getAccount
Account Services
getAccount
20001000
20001000
2000,00
3000,00
4000,00
Write-Write Conflict Erkennung
  • Timestamps
  • Counters
  • State comparison

78
J2EE - Objekt Zustand und Verteilung 1
Remote Objekt Referenz und Serialisierung
Das Problem mit der 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.
Transitive Menge
Gewünschte Menge
Person
Adresse
Stadt
Andere Daten
Verzeichnis der Städte
79
J2EE - Objekt Zustand und Verteilung 2
Domain Model
Methoden Aufruf
Account Services
Service Client
Return Wert
State Holder
80
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.

81
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.
82
J2EE - Skalierung des Systems 2
JSPs and JSP Beans
JSPs 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.
83
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.
??
84
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.

85
The BIG Picture
Backendsysteme
Client
INet
WEB Container
Kunden
EJB Container
JSP/Servlet
Browser JavaScript
Besands- führung I
Besands- führung II
One to One Marketing System
Besands- führung I
Service Broker
UseCase
Connectors
UseCase
Callcenter
Portal
Connectors
Content Management/ Web Authoring
UseCase
WAP Mobil - Device
...
Connectors
UseCase
WAP Gateway
...
INet DB
MAIL SERVER
EMail Client
Connectors
Connectors
Connectors
Message oriented Middleware
Directory Server
86
J2EE Schichten - in der iNet Plattform
Presentation
Persistence
Enterprise Applicationen
Application
Service
Backendsysteme
Client
INet
WEB Container
Kunden
EJB Container
JSP/Servlet
Browser JavaScript
Besands- führung I
Besands- führung II
One to One Marketing System
Besands- führung I
Service Broker
UseCase
Connectors
UseCase
Callcenter
Portal
Connectors
Content Management/ Web Authoring
UseCase
WAP Mobil - Device
...
Connectors
UseCase
WAP Gateway
...
INet DB
MAIL SERVER
EMail Client
Connectors
Connectors
Connectors
Message oriented Middleware
Directory Server
87
One to One Marketing System / Portal
WEB Container
  • Personalisierung
  • Authentifizierung
  • Tracking
  • Business Rule Engine
  • Business Rule Managment System
  • Session Handling
  • Rechte Rollen Konzept

One to One Marketing System
One to One Marketing System
Portal
Portal
  • Broadvision
  • ILOG JRules /USoft Developer Series
  • BEA Commerce Servers
  • ILOG JRules /USoft Developer Series
  • IBM Enterprise Information Portal

Mögliche Produkte
88
Contentmanagament System/Web Authoring
Verwaltet den Inhalt des INET Portals und
ermöglicht die Erstellung von HTML Seiten ohne
HTML Kenntnisse idealer weise als WEB
Anwendung. Führt den Anwender (Inhouse/ Außendien
st) am Cooperate Design entlang zu seinen neuen
Seiten.
WEB Container
Content Management/ Web Authoring
89
Webanwendungen in der iNet Plattform
WEB Anwendungen innerhalb der iNET Plattform
bilden das Model View Controller Pattern ab.
WEB Container
JSP/Servlet
Controller Servlet
Model(EJBs)
dispatch
POST request
Browser
View JSP
get Data
GET respons
get Content
Contentmanagament
90
Service Broker
  • Ist System / Plattformunabhänige Schnittstelle zu
    den Usecase
  • Entkoppelt die Systeme/Dienste durch den Einsatz
    von XML dies macht eine unabhängige
    Weiterentwicklung der Subsysteme und
    Anwednungen möglich

EJB Container
Service Broker
XML
dispatch
91
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 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).
UseCase
92
UseCase/Szenario - genauer betrachtet
UseCase
Prozeß Logik
Business activity Object
Business activity Object
EJB Container
Business activity Object
UseCase/ Szenario
Business activity Object
Business activity Object
93
Basis- / Backendsysteme
Backendsysteme
Kunden
Connectoren werden für alle benötigten
Basissysteme erstellt, so werden diese in der
iNet Plattform einheitlich verfügbar
gemacht. Neben Connectoren zu Basissystemen sind
auch Connectoren zu iNet Plattform eigenen
Diensten wie DB, Messaging und Directory nötig.
Besands- führung I
Besands- führung II
Besands- führung I
Connectors
Callcenter
Connectors
...
Connectors
INet DB
Connectors
Connectors
Message oriented Middleware
Directory Server
94
Szenario 1 in der Vision
Backendsysteme
Interessent
INet
WEB Container
Kunden
EJB Container
JSP/Servlet
Contoler Servlet
Browser JavaScript
post TARIF FORM
Service Broker
Szenario 1
CICS/MQS/JNI/...
Tarifengine
Respons TARIFINFO
getTarif Info
getTarifInfo
getTarifInfo
(XML) Service requ
getTarif Info
getTarif Info
respons
EMail Client
Tarif INFO View
Interessent
data (XML)
createInteressent
create Interessent
AAP SYS
createInfo Request
Content Management
AAP
createInfoRequest
content (XML)
createInfo Request
InfoRequest
Browser JavaScript
getAAP
INet DB
MAIL SERVER
EMail Client
AAP
getMail Vorl
postEMAIL
95
Szenario 1 in der Vision
Backendsysteme
Interessent
INet
WEB Container
Kunden
EJB Container
JSP/Servlet
Contoler Servlet
Browser JavaScript
post Info request
Service Broker
Szenario 1
(XML) Service requ
Tarifengine
Respons Info request
getTarif Info
getTarifInfo
getTarif Info
EMail Client
Tarif INFO View
Interessent
Interessent
data (XML)
createInteressent
createInteressent
create Interessent
AAP SYS
createInfo Request
createInfo Request
Content Management
AAP
createInfoRequest
createInfoRequest
content (XML)
createInfo Request
InfoRequest
InfoRequest
Browser JavaScript
getAAP
getAAP
INet DB
MAIL SERVER
EMail Client
Info Vorlage
AAP
getMail Vorl
getMail Vorl
AAP
JavaMail API
postEMAIL
postEMAIL
96
Szenario 3 in der Vision
Backendsysteme
Kunde
INet
WEB Container
Kunden
EJB Container
Kunde
Kunde
post Info request
JSP/Servlet
Browser JavaScript
getKunde
getKunde
Szenario 3
(XML) Service requ
Logon session MM
One to One Marketing System
Workflow
Service Broker
getVorg Status
Workflow Connector
Workflow Connector
data (XML)
getVorg Info
getVorg Info
EMail Client
Respons VorgangStat
get Vorgang
get Vorgang
content (XML)
Portal
Content Management/ Web Authoring
AAP
getAAP
AAP SYS
AAP
create AkquiHint
Browser JavaScript
getMail Vorl
INet DB
MAIL SERVER
postEMAIL
EMail Client
getTracinkData
Timed Service
97
Szenario 3 in der Vision
Backendsysteme
Kunde
INet
WEB Container
Kunden
EJB Container
Kunde
Kunde
JSP/Servlet
Browser JavaScript
getKunde
Szenario 3
Logon session MM
SURFT
One to One Marketing System
Workflow
Service Broker
getVorg Status
Workflow Connector
getVorg Info
EMail Client
Vorlage Link
get Vorgang
Portal
Content Management/ Web Authoring
AAP
getAAP
getAAP
AAP SYS
AAP
create AkquiHint
create AkquiHint
Browser JavaScript
create WebPage
getMail Vorl
getMail Vorl
INet DB
MAIL SERVER
postEMAIL
postEMAIL
EMail Client
JavaMail API
Info Vorlage
getTracinkData
getTracinkData
Timed Service
Timed Service
98
Szenario 3 in der Vision (Variante)
Backendsysteme
Kunde
INet
WEB Container
Kunden
EJB Container
Kunde
Kunde
JSP/Servlet
Browser JavaScript
getKunde
Szenario 3
Info Mail mit Link
SURFT
One to One Marketing System
Workflow
Service Broker
getVorg Status
Workflow Connector
getVorg Info
EMail Client
get Vorgang
Portal
Content Management/ Web Authoring
requ
AAP
getAAP
getAAP
AAP SYS
AAP
create HintEMail
create HintEMail
Browser JavaScript
create WebPage
getMail Vorl
getMail Vorl
INet DB
MAIL SERVER
postEMAIL
postEMAIL
EMail Client
JavaMail API
Info
getTracinkData
getTracinkData
Timed Service
Timed Service
99
Wichtige Kriterien für die iNet 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

100
XML und Performance
101
Ergebnisse der iNet Plattform 1
Java Framework und Templates
UseCase/ Szenario
Server EJB das über eine XML Schnittstelle
jeglichen Service starten kann.
Service Broker
Connector
Java Basisklassen und Templates Connectoren
Content Manage- ment
Verbindung zum One to One System
One to One Marketing System
Einrichtung und Anbindung Templates für das
Business Rule System Einrichtung der Business
Rule Umgebung (Event System)
Portal
102
Ergebnisse der iNet Plattform 2
Message oriented Middleware
Einrichten der Plattform Message Threads
Standard Connectoren
Directory Server
Einrichten der Plattform Struktur Standard
Connectoren
103
Things to keep in mind 1
Architektur
  • System in die Schichten zerlegen entscheiden wo
    welches Objekt lebt
  • Benötigte Services und deren Service
    Manageridentifizieren
  • 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)

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

105
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
Write a Comment
User Comments (0)
About PowerShow.com