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