Transaktionsverarbeitung mit Java (0,6 MByte)

Werbung
Client/Server-Systeme
Prof. Dr.-Ing. Wilhelm G. Spruth
SS 2005
Teil 18
Transaktionsverarbeitung mit Java
cs 1100 ww6
sch 05-97
cs 1541 ww6
wgs 06-04
http://www.heise.de/newsticker/meldung/print/48843
04.07.2004 12:57
Software-Projekt für Finanzämter gescheitert
Das millionenteure Software-Projekt Fiscus, das den 650
Finanzämtern spätestens ab 2006 einheitliche Programme
bringen sollte, steht nach einem Bericht des Focus
endgültig vor dem Aus. Die Finanzminister von Bund und
Ländern wollten die 1991 begonnene gemeinsame
Software-Entwicklung am kommenden Freitag in einer
Sondersitzung für gescheitert erklären. Die
Programmierversuche haben den Steuerzahler nach
internen Schätzungen bislang zwischen 250 und 900
Millionen Euro gekostet.
FF..FF
Main
Process
Request 1
Process
Request 2
Process
Request 3
Process
andere
Prozesse
Kernel
00..00
Ansatz mit mehreren Prozessen
FF..FF
T
h
r
e
a
d
T
h
r
e
a
d
T
h
r
e
a
d
1
2
3
andere
Prozesse
Servlet
Engine
Kernel
OO..OO
Thread Ansatz
Ein Hochleistungs-Transaktionssystem verarbeitet in jedem
augenblick Hunderte oder Tausende von Transaktionen gleichzeitig
und parallel. Zwei Alternativen:
• 1 Prozess pro Transaktion (Beispiel SAP R/3)
• 1 Thread pro Transaktion (Beispiel CICS unter z/OS)
Web
Server
Datenbank
Server
WebSphere
Java Application
Server
Applic.
HTTP
Server
Servlet
Se.
EJB
DB
Client
Administration
Server
Admin
Web Application Server
Web
Server
WebSphere
Java Application
Server Clones 1
HTTP
Server
Servlet
Datenbank
Server
Se.
2
EJB
Clone 3
Administration
Server
DB
Client
Admin
Mehrfache Clones des Java Application Servers,
jeder mit einer eigenen Java Virtuellen Maschine
Diese
Transaktionen
werden
parallel
verarbeitet
Freigewordene
PRJVM
benutzen
Zeit
Parallele Verarbeitung von Transaktionen
Keine Performanz ohne
Multiprogrammierung
Nutzung von Java Threads
innerhalb einer
Java Virtuellen Maschine
ACID Bedingungen einhalten
Nutzung der Java Threads
The existing application isolation mechanisms, such as
class loaders, do not guarantee that two arbitrary
applications executing in the same instance of the JVM will
not interfere with one another. Such interference can occur
in many places. For instance, mutable parts of classes can
leak object references and can allow one application to
prevent the others from invoking certain methods. The
internalized strings introduce shared, easy to capture
monitors. Sharing event and finalization queues and their
associated handling threads can block or hinder the
execution of some application. Monopolizing of
computational resources, such as heap memory, by one
application can starve the others.
Grzegorz Czajkowski, Laurent Daynès:
Multitasking without Compromise: a Virtual Machine Evolution.
http://research.sun.com/projects/barcelona/papers/oopsla01.pdf
Java gives the virtuoso thread programmer considerable
freedom, but it also presents many pitfalls for less
experienced programmers, who can create complex
programs that fail in baffling ways.
Bo Sandén: Coping with Java Threads. IEEE Computer, Vol. 37, Nr. 4,
April 2004, p. 20.
Ausführung einer Folge von Transaktionen
Zeit
Transaktion 1
Transaktion 2
Transaktion 3
JVM wiederverwenden oder neu starten ?
Eine Transaktion die Ausführung der Folge-Transaktion
beeinflussen, indem sie den Zustand (State) der JVM ändert.
Beispiele für eventuelle sicherheitskritische Reste der
vorhergehenden Transaktion
•
überschriebene statische Variablen
•
Starten von Threads
•
geladene native Bibliotheken.
Klassischer Ansatz: Für jede Transaktion wird eine neue JVM
gestartet und nach Abschluss der Transaktion wieder beendet.
Das Hoch- und Herunterfahren einer JVM hat jedoch einen
erheblichen Zeitaufwand zur Folge. Bei jeder Initialisierung einer
JVM werden
•
60 System Klassen geladen,
•
700 Array-Objekte und
•
1000 non-Array-Objekte allokiert und angelegt.
Pfadlänge bis zu 100 Millionen Maschinenbefehle, ca. 1 Sekunde
Verarbeitungsdauer.
Lösung: JVM mit einer zusätzlichen Reset Methode ausstatten.
Persistent Reusable Java Virtual Machine - PRJVM
Persistent Reusable Java Virtual Machine
PRJVM
JNI_CreateJavaVM Call -Xresettable
Start Transaction
Commit
no
yes
JVM Resettable ?
Es ist möglich, dass die Ausführung einer Transaktion die
PRJVM in einen Zustand unresettable versetzt. Dies kann auf
einem asozialen, jedoch legalen Verhalten der Tansaktion
beruhen.
Beispiele
• übrig gebliebene geöffnete Files,
• noch existierende „user threads“
• Referenzen in den Transient Heap durch lokale Variablen.
Wenn eine dieser Bedingungen auftritt, erzeugt der Aufruf
ResetJavaVM den Rückgabewert false
Virtueller Adressenraum # 1
#2
Enclave
Enclave
Enclave
Enclave
Enclave
JVM
JVM
JVM
JVM
JVM
Language Envoronment (LE)
Laufzeitumgebung
Cobol, C/C++, PL/1, Java
z/OS Kernel
z/OS Enclaves
Das Language Environment (LE) war ursprünglich eine von
verschiedenen Compilern (Cobol, PL/1, C/C++) gemeinsam genutzte
Sammlung von Laufzeit-Bibliotheken.
Ein Teil von LE sind die Run-Time-Units oder Enclaves. Enclaves
sind Thread-ähnliche Einheiten, die jeweils unter einem egenen
Prozessleitblock (Process Control Block, Task Control Block, TCB)
gemeinsam in einem virtuellen Adressenraum laufen. Sie benutzen
hierfür einen Specherschutzschlüssel-(storage protection key), eine
Einrichtung der z/Series Hardware Architektur.
LE Enclaves können eingesetzt werden um unterschiedliche
Anwendungen innerhalb des gleichen virtuellen Adressenraums
voneinander zu isolieren. Beim Einsatz von Java kann man jeweils
eine JVM innerhalb einer Enclave unterbringen und damit mehrere
JVMs (z.B. 60 .. 100) innerhalb eines einzelnen virtuellen
Adressenraums ausführen.
JVM Set
Worker JVMs
(Enclave)
virtueller
Adressenraum
Master JVM
(Enclaves)
Die erste PRJVM übernimmt dabei die Rolle der Master PRJVM und
kontrolliert den JVM Set:
·
·
Sie stellt den System Heap zur Verfügung, welcher von allen
Worker PRJVMs benutzt wird.
Sie richtet die Class Loader Umgebung ein, die zum Laden der
Systenklassen und Shareable Anwendungsklassen benötigt
wird.
freie
JVM mit
passenden
Profile
verfügbar ?
nein
Platz für
eine weitere
JVM in der
Region
vorhanden ?
ja
ja
neue
JVM
starten
nein
freie
JVM mit
anderem
Profil
verfügbar ?
JVM
zuordnen
nein
auf
verfügbare
JVM
warten
ja
JVM
stehlen
und neu
initialisieren
Unterschiedliche Transaktionstypen unterscheiden sich durch
unterschiedliche Anwendungsklassen. Nach Möglichkeit eine freie
Worker PRJVM mit den richtitigen Anwendungsklassen auswählen.
Wenn das nicht möglich ist, Anwendungsklassen in eine verfügbare
Worker JVM nachladen.
Anwendung # 1
PRJVM
PRJVM
Anwendung # 2
PRJVM
PRJVM
Anwendung # 3
PRJVM
PRJVM
PRJVM
PRJVM
PRJVM
Architekturanalyse der Java Virtual
Machine unter z/OS und Linux
Diplomarbeit
der Fakultät für Informations- und
Kognitionswissenschaften
an der Universität Tübingen
vorgelegt von
Marc Beyerle
Matrikelnummer: 1830910
Betreuer:
Prof. Dr.-Ing. Wilhelm G. Spruth
Dr. Bernhard Dierberger
Browser
Java Client
HTTP
z/OS
CICS Transaction Server
RMI/IIOP
Servlet
Session Bean
RMI/IIOP
RMI/IIOP
CICS
EJB Server
Session Bean
Session Bean
WebSphere
DB2
Benutzung von Enterprise Java Beans
in einer CICS Anwendung
es 1386 ww6
wgs 07-02
OS/390
Java Class
Servlet
DB2
WebSphere
Native Driver
JVM
JDBC, DB2Connect Driver
Java Class
ProduktionsUmgebung
Servlet
WebSphere
Arbeitsplatz
Rechner
Produktion
JVM
Middle Tier Rechner
export
Repository
Entwicklungsumgebung
Arbeitsplatzrechner
Entwicklung
Trennung zwischen Entwicklung und Produktion
es 1381 ww6
wgs 03-02
Java Programmierung mit JDBC
Zugriff auf eine OS/390 DB2 Datenbank
Diplomarbeit
Stefan Munz
1. Entwicklung eines Java Programms auf der Workstation
2. Ausführung auf der Workstation, Zugriff auf die OS/390
Datenbank alternativ mit JDBC und mit DB2Connect
3. Portierung des Java Quellcodes nach OS/390, Übersetzung mit
dem OS/390 High Performance Java Compiler und Ausführung
4. Portierung des unmodifizierten Bytecodes nach OS/390 und
Ausführung
Windows 2000 Klient
OS/390 Server
Servlet
Browser
Tomcat
Servlet
Engine
DB2
Test Umgebung, simulierte 3-Tier Konfiguration
Middle Tier
OS/390 Server
Servlet
Browser
Tomcat
Servlet
Engine
DB2
Echte 3-Tier Konfiguration
OS/390 Server
Servlet
Browser
WebSphere
Servlet
Engine
DB2
2-Tier Konfiguration
Alternativen für einen Servlet Zugriff
auf eine OS/390 DB2 Datenbank
es 1402 ww6
wgs 01-03
Clients
Web
Sphere
Backend
Application
NT
Unix
OS/390
Production
Production
Production
Library
Test
Library
Client
Web
Sphere
NT
Unix
OS/390
Test
Test
Repository
1. Compile C oder Cobol Code
2. Link
Templates
Linkage Table
Optons
NT
Development
Machine
Load Module
3. Test
Translating Development Code
into Production Code
es 0803 ww6
wgs 07-00
Client/Server Praktikum
WS 2005/2006
Prof. Dr.-Ing. Wilhelm G. Spruth
Es werden die folgenden Aufgaben bearbeitet:
1. LDAP Directory Service
2. CORBA
3. Java RMI und RMI/IIOP
4. Programmierung unter OS/390 mit ISPF
5. CICS BMS Transaktion - Zugriff auf eine DB2 Datenbank
6. Servlet und MQSeries
7. z/OS Zugriff von einem Java Klienten auf z/OS DB2
Als Option besteht die Möglichkeit zu weiteren Experimenten:
1. OS/390 Java Data Base Connectivity mit Eclipse Framework
2. Java Client Zugriff mit MQSeries auf CICS COMMAREA
3. Java Client Zugriff mit CTG auf CICS COMMAREA
Betreuung durch Murat Bayindir und Marc Becker
Die Vorlesung Client/Server Systeme ist als Wahlfach innerhalb der
Technischen Informatik zugelassen, und kann mit 2 Stunden in den
Prüfungsplan Technische Informatik aufgenommen werden.
Das Praktikum kann ebenfalls im Rahmen der Fachprüfung
Technische Informatik in den Prüfungsplan mit 4 SWS
aufgenommen werden.
Anmeldung bei Frau Reimold, Lehrstuhl Prof. Rosenstiel
cs 1602 ww6
wgs 06-02
Studienarbeiten
Diplomarbeiten
• Einsatz einer modernen IDE (Integrated Development
Environment) für die Entwicklung einer Client/Server
Anwendung.
• Untersuchungen zum Thema Isolation von Java Threads
für die Transaktionsverarbeitung mit Hilfe von Enterprise
Java Beans.
• Erstellen eines WebSphere Web Application Server und
CICS Performance Modells für Java Transaktionsanwendungen und unterschiedliche Systemkonfigurationen (Win XP, Linux, z/OS).
• Untersuchungen und Verbesserungen des Open Source
WINE Emulators. WINE erlaubt die Ausführung von
Windows Anwendungen unter Linux.
Arbeiten können am Lehrstuhl Prof. Rosenstiel oder extern
bei Partnern in der Wirtschaft angefertigt werden (z.B. IBM
Laboratorien Böblingen).
siehe auch http://www-ti.informatik.uni-tuebingen.de/~spruth/index_de.html
Kontaktaufnahme:
[email protected]
Tel.: 0172-8051-485
oder über den Lehrstuhl Prof. Rosenstiel / Frau Reimold
cs 1604 ww6
wgs 06-99
Client/Server Systeme
Beispiele für Prüfungsfragen
Unterschied zwischen Sockets und Ports.
Überblick über die Struktur eines einfachen Socket Programms.
Wie findet ein Socket Programm seinen Server?
Was ist ein RPC. Ist er (normalerweise) asynchron oder synchron?
Funktion der Stubs und Skeletons.
Problem des Copy by Restore.
Was macht man, wenn der Klient eine Little Endian und der Server eine Big
Endian Datendarstellung verwendet. Bei Sockets? Beim RPC? Was sind XDR
und ASN.1? Treten die hier angesprochenen Probleme auch bei CICS DPL auf
? Bei CORBA? Bei Java RMI? Wodurch unterscheidet sich ASCII von EBCDIC?
Unterschied zwischen symmetrischen (z.B. DES) und asymmetrischen (z.B.
RSA) Chiffres.
Wie funktioniert eine digitale Unterschrift?
Was ist ein Message Digest? Wozu wird es benötigt?
Aufgabe eines Key Distribution Servers. Konzept des Kerberos
Authentifizierung Prozesses.
Was sind Ipsec, Secure Socket Layer und Pretty Good Privacy?
Was sind Access Control Listen und Capabilities?
Unterschied zwischen einem Schicht 3 und einem Schicht 7 Firewall.
Unterschied zwischen einem Namensdienst (z.B. DNS) und einem
Verzeichnisdienst (z.B. X.500, LDAP). Gibt es soetwas auch unter CORBA?
Unter Java RMI ?
Was sind die ACID Eigenschaften bei der Transaktionsverarbeitung? Können
Transaktionen parallel (multithreaded) verarbeitet werden? Probleme?
Was sind Stored Procedures, im Gegensatz zu einem Transaktionsmonitor?
Warum brauchen wir Locks (Sperren) in der Transaktionsverarbeitung?
Was sind „Logical Units of Work“ (LUW) und Sperrpunkte (SyncPoints)?
2-Phase Commit Protokoll. Was ist es? Warum braucht man es?
Können Sie mit den Begriffen CICS (Customer Information Control System)
und 3270 Protokoll etwas anfangen?
Was sind Conversational und Pseudo-conversational Transactions? Was ist
eine Session? Wie wird der State einer pseudoconversationalen Transaktion
gehalten?
Was ist ABAP/4?
Um einen komplexen Bildschirminhalt unter SAP R/3 aufzubauen, braucht man
nur wenige Kbyte an Daten zwischen Server und Klienten zu übertragen.
Funktion des SAP GUI Prozesses?
Der RPC arbeitet (normalerweise) synchron. Sind auch asynchrone
Client/Server Systeme denkbar? (Stichwort:Message oriented Middleware).
Unterschied zu e-Mail?
Wie spielen Servlets und Java Server Pages zusammen um HTML
Bildschirminhalte zu erzeugen. Ist ein Servlet eine Java Klasse? Ist eine JSP
eine Java Klasse? Können beide mit einer URL aufgerufen werden? Wozu
dient ein Form Tag ?
Was ist ein Web Application Server? Was sind Enterprise Java Beans?
Unterschied zwischen Entity, Message und Session Beans? Wie speichern
letztere ihre Daten?
Wie verteilt ein Web Application Server seine Last auf mehrere Prozessoren?
Welche Probleme will man mit CORBA lösen? Was ist die Aufgabe eines ORB?
Aufgabe des CORBA IDL Compilers. Warum braucht man ihn? Was ist
überhaupt eine „Interface (Schnittstelle)“? Aufgabe des Schnittstellen
(Interface) Repositories und des Implementation Repositories.
Alternativen zu CORBA. Haben CORBA, RMI und DCOM ähnliche Funktionen?
Welches Problem versucht man mit RMI over IIOP zu lösen?
Gibt es außer TCP/IP noch andere Transport Protokolle? Was ist SNA?
Client/Server Systeme unter OS/390. Können Java Programme auf CICS
zugreifen? CORBA Programme? Der CICS Basic Mapping Support hat eine
begrenzte Funktionalität. Was sind die Alternativen ( COMMAREA, CICS
Transaction Gateway?)
Was sind Connectoren, CommonConnector Framework und Java J2EE
Connection Architecture?
Was versteht der Java J2EE Standard unter einem Enterprise Information
System. Kan ein solches auch in Java erstellt werden ? Probleme ?
Wenn das Praktikum Teil des Prüfungsumfangs ist, wird der Inhalt der
Aufgaben diskutiert. Es wird erwartet, dass Sie sich an den Inhalt der Übungen
erinnern. Beispielsfragen sind :
Was ist eine CICS Group? Wozu braucht man sie ? Was bewirkt das CICS
SENDMAP Statement?
Wie wird der Speicherplatz in einer DB2 relationalen Datenbank angelegt?
Angenommen, ein Servlet läuft unter WebSphere. Welchen Unterschied gibt es,
wenn WebSpere auf einem getrennten Middle-Tier Rechner oder in einem
virtuellen Adressenraum unter OS/390 bzw. z/OS läuft ?
Was sind Unix System Services unter OS/390 bzw. z/OS ? Was ist der
Unterschied zu Linux, angenommen Linux wird als reines Server
Betriebssystem eingesetzt ?
Was ist eine MQSeries Queue, ein Queue Manager und ein Message Queue
Channel?
Unterschiede zwischen JDBC, SQLJ und DB2Connect.
cs 1603 ww6
wgs 06-99
Herunterladen