Client/Server-Systeme Prof. Dr.-Ing. Wilhelm G. Spruth SS 2004 Teil 17 Transaktionsverarbeitung mit Java cs 1100 ww6 sch 05-97 Connector IF WEB Browser HTML Enterprise Java Bean(s) WEB Server Java Servlet(s) CICS, andere DB2 Application Server WEB Application Server OS/390 Server Web Application Server als Presentation und Integration Server cs 1474 ww6 wgs 01-01 B PM EP XI BI W AB AP JA VA JV M WD J WD A Ablaufumgebung Web Application Server (WAS) NW DS AB AP SAP Gui AnDyn we Pro nd. A WB R/3 Enterprise Netweaver Struktur eines modernen SAP R/3 Systems BPM XI EP BIW JVM WDJ WDA NWDS AWB Business Process Management (benutzt BPEL) Exchange Infrastruktur Enterprise Portal Business Information Warehouse Java Virtual Machine Web Dynpro for Java Web Dynpro for ABAP Netweaver Development Studio ABAP Workbench cs 1352 ww6 CW 9/2004, p.20, http://www.computerwoche.de/index.cfm?pageid=256&artid=58396 wgs 05-04 Java Transaktionsverarbeitung unter dem z/OS Betriebssystem Persistent Reuseable Java Virtual Machine PRJVM Web Server Datenbank Server WebSphere Java Application Server Applic. Applic. HTTP Server Servlet Se. EJB DB Client Administration Server Admin Web Application Server Web Server Datenbank Server WebSphere Java Application Server Clones 1 2 Applic. HTTP Server Servlet Se. 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 Warteschlange Work Load Manager Ausführungseinheiten Lastverteilung Eintreffende Transaktionen werden zunächst in einer warteschlange zwischengespeichert, und dann auf eine von mehreren Ausführungseinheiten verteilt. Ausführungseinheiten können sein: • individuelle Rechner, 1 Prozess/Rechner (unwahrscheinlich) • individuelle Prozesse • individuelle Threads innerhalb eines Prozesses 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) 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. [ CZA 02 ] Grzegorz Czajkowski, Laurent Daynès: Multitasking without Compromise: a Virtual Machine Evolution. http://research.sun.com/projects/barcelona/papers/oopsla01.pdf 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 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. Enclaves sind LE Run-Time Units, die eine multithreaded Vearbeitung ermöglichen. 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. Worker JVMs virtueller Adressraum Master JVM LE Enclaves Für z/OS und OS/390 Sprachen wie Cobol. PL/1, C/C++ und Fortran existiert eine als LE (Language Environment) bezeichnete Einrichtung. Dies ist zunächst eine Laufzeitumgebung von einheitlichen Bibliotheken, die von den genannten Sprachcompilern gemeinsam benutzt werden kann. Ein Teil von LE sind die Run-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), normalerweise Schlüssel Nr. 8. Der Hardware Speicherschutz arbeitet unabhängig und zusätzlich zu dem üblichen Speicherschutz über Segment- und Seitentafeln und ist eine Einrichtung der z/Series Hardware Architektur, die auf anderen Plattformen nicht verfügbar ist (siehe [ HERR ] , S. 14). LE Enclaves können eingesetzt werden um unterschiedliche Anwendungen innerhalb des gleichen virtuellen Adressenraums voneinander zu isolieren. Sie werden u.a. in transaktionalen Subsystemen wie CICS, IMS und DB2 benutzt. Spezifisch ist es hiermit möglich, mehrere JVMs innerhalb eines Adressraums laufen zu lassen. es 1321 ww6 wgs 11-00 Transient Heap Middleware Heap Application Classes System Heap System Classes Der Transient Heap enthält Objekte, die von den Anwendungsklassen erzeugt werden. Der Middleware Heap enthält Objekte, die von den Middleware Klassen erzeugt werden. Middleware enthält Funktionen wie CICS Transaction Gateway Klassen, SQLJ/JDBC Klassen und JNDI Klassen. Der System Heap besteht aus dem Main System Heap, der die System Klassen enthält, und dem Shareable Application Class Heap, der Klassen aus der eingesetzten JAR File enthält. Virtueller Adressraum Worker Worker Worker Master Enclave Enclave Enclave Enclave PRJVM PRJVM PRJVM PRJVM T T T T M M M . M M S S S S T = Transient Heap, M = Middleware Heap, S = System Heap Gemeinsame Nutzung des System Heaps und von JIT Klassen System- und Anwendungsklassen sind nur einmal vorhanden und können von allen PRJVMs gemeinsam genutzt werden Order of class loading for the persistent reusable JVM Serial reuse of a JVM is enabled by dividing the classes contained in the JVM into distinct parts as follows. The JVM or primordial code , consisting of the system classes and standard Java extension classes, which provide the base services in the JVM. _ The middleware , which provides services that access resources. These include the JCICS interfaces classes, the CCF and CTG classes, the JDBC classes, and the JNDI classes. The trusted middleware class path is built automatically by CICS from the paths specified on the CICS_DIRECTORY and JAVA_HOME parameters. Additional directories or JAR files can be added by using the TMPREFIX and TMSUFFIX parameters. Generally speaking, only classes supplied by IBM, or your chosen middleware vendor, should be placed on the trusted middleware class path, using the TMSUFFIX parameter. _ The shareable application code, consisting of the enterprise beans themselves and designated shareable application code. The shareable application classpath is defined using the system property ibm.jvm.shareable.application.class.path and should be used for any utility classes. Classes defined in here take precedence over classes from the deployed JAR file. The enterprise bean classes are also loaded into the application class system heap. They are located by reference to the DJAR definition defined in CICS. Transient Heap Transient Heap Transient Heap Transient Heap Transient Heap Middleware Heap Middleware Heap Middleware Heap Middleware Heap Middleware Heap 1 2 3 n reset reset reset n+1 reset + Garbage Collection Garbage Collection erfolgt lediglich nach 100 Resets. Bedeutender Leistungsgewinn. JNI_CreateJavaVM Call -Xresettable Create Master JVM Create Worker JVMs Start Transaktionen while Verarbeitung laufender Transaktionen warten auf neue Transaktion select Worker JVM ordne Transaktion zu Transaktionsende JVM Resettable ? ja nein Worker JVM zerstören Create neue Worker JVM: JNI_CreateJavaVM Call -Xresettable 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 Debit Überweisung Bankschalter Credit TPC - A Transaktion Kommunikator Adressen Java Adressen DB2 Raum Raum Adressen Raum Task List jvmcreate jvmcreate jvmcreate jvmcreate jvmcreate z/OS oder z/Linux Kernel normale JVM normale JVM PRJVN Linux z/OS z/OS Testumgebung Kommunikator Adressen Raum Klient Java Adressen Raum DB2 Adressen Raum z/OS oder z/Linux Kernel Normale JVM zLinux normale JVM z/OS Tx/s Tx/s 1,223 0,796 Verhältnis zLinux zu z/OS PRJVM z/OS Verhältnis PRJVM zu normale JVM Tx/s 1,54 261,04 327,94 freie JVM mit passenden Profile verfügbar ? nein Platz für eine weitere JVM in der Region vorhanden ? ja neue JVM starten ja 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 PRJVM Anwendung # 2 PRJVM PRJVM Anwendung # 3 PRJVM PRJVM PRJVM PRJVM Browser Java Client HTTP z/OS 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 CPU CPU CPU SMP tightly coupled Hauptspeicher Hauptspeicher Hauptspeicher Hauptspeicher CPU CPU CPU Hauptspeicher Hauptspeicher Hauptspeicher CPU CPU CPU Cluster loosely coupled closely coupled Globalspeicher Taxonomie von MIMD Parallelrechnern es 0315 ww6 wgs 08-00 virtuelle Adressenräume 1 2 3 4 5 6 PC PC PC PC PC PC ... ... n FF..FF Hauptspeicher PC Kernel 00..00 CPU 1 CPU 2 CPU 3 CPU 4 CPU 5 CPU 6 Annahmen: In jedem virtuellen Adressenraum läuft ein Prozess Ein Thread pro Prozess Ein Prozessleitblock (PCB, Process Control Block) pro Thread/Prozess Anzahl der Prozesse > Anzahl der CPUs Jede CPU führt einen anderen Prozess aus Scheduler/Dispatcher des Kernels ordnet die einzelnen PCBs den CPUs zu. Mehrfachverarbeitung auf einem symmetrischen Multiprozessor cs 0949 ww6 wgs 03-04 virtuelle Adressenräume 1 2 3 4... ... n FF..FF Hauptspeicher PC PC PC PC PC PC Kernel 00..00 CPU 1 CPU 2 CPU 3 CPU 4 CPU 5 CPU 6 Prozess Nr. 2 in virtuellem Adressenraum Nr. 2 ist multithreaded. 4 Threads mit je einem PCB pro Thread können von 4 CPUs parallel verarbeitet werden. Im Fall von CICS sind das 4 Transaktionen, die gleicchzeitig ausgeführt werden. Eine Run Time Unit oder Enclave ist die Laufzeitumgebung eines CICS Threads. Multithreaded Mehrfachverarbeitung cs 0950 ww6 wgs 03-04 Klienten CICS Regions AOR TOR AOR AOR FOR Datenbank CPU CPU CPU CPU Hauptspeicher 32 CPU´s + 16 Support SMP Prozessoren 768 Kanäle davon 8 E/A (System) L2 Cache Coupling Facility Coupling Links SMP SMP SMP SMP SMP SMP 32 max. 100 MByte/s FICON / Fibrechannel Protokoll Sysplex Timer FICON Switch andere E/A 100 MByte/s CU = Control Unit Teil eines Enterprise Storage Glasfaser Servers CU CU CU CU Parallel Sysplex Es 0709 ww6 wgs 10-01 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 zSeries, S/390, z/OS, OS/390 Technologische Führungsposition Ein leistungsfähiger Großrechner für Client/Server Anwendungen benötigt eine Reihe von Einrichtungen, die nicht auf allen Rechnern verfügbar sind. Beispiele sind (Sommer 2004): • • • • • • • Hardware Architektur Ein-/Ausgabe Clustering, Sysplex, Mehrfach-Rechner Systeme Skalierung mit Hilfe der Coupling Facility Partitionierung und PR/SM LPAR Mode Goal-orientierter Workload-Manager Persistent Reuseable Java Virtual Machine 7 1 3 4 4 3 Hauptspeicher aufgeteilt in Blöcke (Rahmen) zu je 4096 Bytes Jedem Block wird vom Kernel eine Speicherschutznummer zwischen 0 ... 15 zugeordnet 3 3 1 7 7 1 0 0 0 00 ... 00 S/390 Speicherschutz es 0146 ww6 wgs 06-99 Speicherschutz Speicherschutzschlüssel 4 Bit Programmstatuswort 20 Bit 12 Bit 4 Bit Adresse RÄ Speicherschutzschnellspeicher mit Hauptspeicherschlüsseln. Je 1 Schlüssel (4 Bit) pro 4096 Byte Block (plus Steuerbits, z.B. Referenzbit R und Änderungsbit Ä) ja Vergleich Speicherzugriff ok nein Programmunterbrechung es 0147 ww6 wgs 06-99 Client/Server Praktikum WS 2003/2004 Prof. Dr.-Ing. Wilhelm G. Spruth Es werden die folgenden Aufgaben bearbeitet: 1. LDAP Directory Service 2. CORBA 3. CORBA Namensdienst 4. Java Servlet 5. Programmierung unter OS/390 mit ISPF 6. CICS BMS Transaktion - Zugriff auf eine DB2 Datenbank (zählt doppelt) Für Freiwillige besteht die Möglichkeit zu weiteren Experimenten: 1. OS/390 Java Data Base Connectivity mit Eclipse für Java 2. Java Client Zugriff mit MQSeries oder CTG auf CICS COMMAREA Betreuung durch Frau Denkinger, 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. Schriftliche Voranmeldung bei Frau Reimold, Lehrstuhl Prof. Rosenstiel cs 1602 ww6 wgs 06-02 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 CORBA auf? Bei Java RMI? Wodurch unterscheidet sich ASCII von EBCDIC? Unterschied zwischen symmetrischen (z.B. DES) und asymmetrischen (z.B. RSA) Chiffres. Aufgabe eines Key Distribution Servers. Konzept des Kerberos Authentifizierung Prozesses. Wie funktioniert eine digitale Unterschrift? Was ist ein Message Digest? Wozu wird es benötigt? Was sind Ipsec, Secure Socket Layer und Pretty Good Privacy? Was sind Access Control Listen und Capabilities? Was ist ein Firewall und eine Demilitarized Zone? 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? Unterschied in der Vorgehensweise bei der Speicherung der Daten zwischen dem CICS und dem SAP/R3 Transaktionsmonitor. 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? Eine JSP? Kann es mit einer URL aufgerufen werden? Was ist ein Web Application Server? Was sind Enterprise Java Beans? Unterschied zwischen Entity 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. cs 1603 ww6 wgs 06-99 Studienarbeiten Diplomarbeiten siehe auch http://www-ti.informatik.uni-tuebingen.de/~spruth/index_de.html • Entwicklung neuer Aufgaben für das Client/Server Praktikum. Schwerpunkt Java und Web Transaktionen • Erstellen eines WebSphere Web Application Server Performance Modells für unterschiedliche Systemkonfigurationen (Win 2000, Linux, OS/390). • Portierung existierender Linux Anwendungen auf OS/390 Unix System Services • Weitere Themen im Umfeld OS/390-Internet Integration, Enterprise Java Beans Arbeiten können am Lehrstuhl Prof. Rosenstiel oder extern bei Partnern in der Wirtschaft angefertigt werden (z.B. IBM Laboratorien Böblingen). Kontaktaufnahme: [email protected] Tel.: 0172-8051-485 oder über den Lehrstuhl Prof. Rosenstiel / Frau Reimold cs 1604 ww6 wgs 06-99