Title: Rolle von Java Verteilte Verarbeitung mit Java J2EE
1Rolle von JavaVerteilte Verarbeitung mit
JavaJ2EE ÜbersichtJ2EE Details
2Entwicklung 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)
3Rolle 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)
4Java 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
5Java 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
6Java 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
7Verteilte Verarbeitung mit Java
8Verteilte 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
9CORBA
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
10CORBA 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
11CORBA 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
12CORBA ü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
13Verteilte 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
14RMI 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
15Verteilte Verarbeitung mit Java (Beispiel)
Web Browser
Applet
Lädt Applet
HTTP
RMI
Remote Method Invocation
Web Server
EJB
File System
Application Server
DB
16Verteilte 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
17Verteilte 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
18RMI über IIOP
Server (Java)
Client (Java)
Server Skeleton
Client Stub
- Wie Standard RMI
- Benutzung des IIOP Protokolls
- Damit Verteilung über das Internet
19Verteilte 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
20Kooperation 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
21Verteilte 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
22Kooperation 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
23Vorteile 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
24Java 2 Platform, Enterprise Edition Übersicht
25Java 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
26J2EE 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
27J2EE
- 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
28J2EE 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
29J2EE 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)
30Referenzarchitektur
HTTP
LAN
Verzeichnis Services
Geschäfts Partner
Content Management
Messaging Services
Sicherheit
Prozess-Management
Transaktions-Management
ERP Systeme
Alt-Anwend.
Datenbanken
Datenbanken
31Referenzarchitektur 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
32Java 2 Platform, Enterprise EditionDetails
- Christian Menk
- Software Architektur Berater
- Softlab GmbH
33J2EE 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)
34Java 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
35Java 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)
36Java 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
37Servlet 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)
...
38Java 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)
39Java 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
40JSP 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
41Java 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
42Java 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"
43Java 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.
44Java 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
45Java 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.
46Java Remote Method Invocation RMI Ablauf
JNDI
Stub
Java VM
Java VM
1 lookup
2 get
Java Applikation
4 call Skeleton
3 call
8 result
Skeleton
5 call OBJ
6 return result
Java Object
Stub
7 result to Stub
47Java 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.
48Enterprise 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.
49Enterprise 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
50Enterprise 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)
51Enterprise 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
52Enterprise 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
53Enterprise 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
54Enterprise 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
55Enterprise 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
56Enterprise Java Beans Message Beans 2
EJB Container
CMP Entity
Stateless Sessionbean
Interaction
Interaction
Message Bean
onMessage
JMS Provider
57Java 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
58Java 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
59Java 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
60Java 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
61Java 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.
62Java Transaction API (JTA)
63Java Transaction Service (JTS)
64Java 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.
65Java Mail Beispiel
Session
Store
getFolder(A)
Transport
Folder A
getFolder(C)
Folder C
Folder C
getMessage(1)
Message 1
Message 1
66Java 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
67Java 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.
68Client 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
69Client 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
70Client 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
71Was macht WEB basierte Systeme komplex
Backendsysteme
Applikation Server
WEB Container
EJB Container
Enterprise Applikation
Client
DB
72Ein WEB Hit aus J2EE Sicht
Web Browser
KLICK oder ENTER
Web Server
Web Container Servlet - Engine
EJB Conteiner
Persistente Daten
73Things 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
74J2EE - Architektur - J2EE Schichten
75J2EE - 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
76J2EE - 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.
77J2EE - 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
78J2EE - 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
79J2EE - Objekt Zustand und Verteilung 2
Domain Model
Methoden Aufruf
Account Services
Service Client
Return Wert
State Holder
80J2EE - 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.
81J2EE - 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.
82J2EE - 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.
83J2EE - 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.
??
84J2EE - 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.
85The 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
86J2EE 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
87One 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
88Contentmanagament 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
89Webanwendungen 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
90Service 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
91UseCase
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
92UseCase/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
93Basis- / 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
94Szenario 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
95Szenario 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
96Szenario 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
97Szenario 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
98Szenario 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
99Wichtige 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
100XML und Performance
101Ergebnisse 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
102Ergebnisse der iNet Plattform 2
Message oriented Middleware
Einrichten der Plattform Message Threads
Standard Connectoren
Directory Server
Einrichten der Plattform Struktur Standard
Connectoren
103Things 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)
104Things 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 ?
105Things 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