Brückenschlag zwischen J2EE 1.4 und Mainframe Plug&Play für Hostanwendungen über JCA 1.5? Host Systeme IT Szenario Application Server Web Client Web Server HTTP externer Server, ERP Systeme HTTP + XML Web Services DB Server Externe Server Anton Vorsamer Web Services und Host Anwendungen Host Anwendungen bieten relativ oft geeignete Services / Funktionen Host Anwendungen „sprechen“ i.d.R. nicht XML / SOAP „Übersetzung / Anpassung“ in einer vorgelagerten Schicht ist daher nötig .NET oder J2EE bieten sich an Anton Vorsamer Charakterisierung von Host Services (1) Welche Host Services bieten sich für Web Services an? Bereits heute über das Netz aufrufbar, i.d.R. eingebettet in TP Monitor Umgebungen wie CICS, IMS, openUTM Sind in 3GL Sprachen, meist in COBOL implementiert, manchmal auch in C,PL/1 etc. oder gar noch 390/Assembler Erwarten beim Datenaustausch strukturierte, abdruckbare Daten im jeweiligen Host Zeichensatz (EBCDIC) Beschreibung dieser Daten als COBOL, C, Assembler Datenstrukturen liegt i.d.R. vor Anton Vorsamer Charakterisierung von Host Services (2) Wie können Host Services aufgerufen werden? Direkt über Host Protokolle LU6, OSI-TP i.d.R. über entsprechende Client Bibliotheken der Hersteller Gibt es für die gängigen Plattformen Windows, Unix, Java, ... Vertreter sind ECI (IBM), UPIC (FSC), JCO (SAP) usw. Diese Funktionen werden mittlerweile auch als J2EE konforme Resource Adapter (JCA Connector) angeboten Anton Vorsamer FSC / BS2000/OSD Host Connectivity J2EE Application Server IBM / z/OS Anton Vorsamer andere Unisys über OSI-TP Host Integration „Screen-Scraping“ BS2000 Terminal Service J2EE Applicationserver EJB EJB Container EJB Component EJB Component EJB Component Component z/OS Transaction Synchronisation / Commmunication Terminal Service Anton Vorsamer Host Integration via Message Queues 2. TA MQ J2EE Applicationserver EJB EJB Container EJB Component EJB Component EJB Component Component MQ 1. TA 3. TA Host Asyn. Program 5. TA 4. TA MQ MQ Transaction Synchronisation / Commmunication MQ kann sein: • JMS • MQSeries • UTM Message Queues (FPUT/DPUT) • CICS Queues Anton Vorsamer • Round-Trip besteht aus 5 Transaktionen, davon 3 in der Anwendung selbst • undefinierte Dauer/Wartezeit für den Round-Trip • Fehlerbehandlung nur über logische Stornierungen (aufwändige Programmierung) openUTM Host Integration über J2EE OLTP Service OSI-TP System J2EE Applicationserver EJB EJB Container EJB Component EJB Component EJB Component Component LU6 & OSI-TP synchrones and asynchrones Messaging Transaktionen OLTP Service CICS / IMS Transaction Synchronisation / Commmunication OLTP Service Anton Vorsamer J2EE Architektur Client Client Web Container Client Client Anton Vorsamer Servlets + JSPs EJB EJB MDB Client Enterprise Information Systeme : EJB Container JMS JDBC Relationale Datenbanken Host Anwendungen ERP Systeme J2EE Connector Architektur JCA 1.0 / 1.5 Resource Adapter Plug & Play ? J2EE 1.3 Adapter Externe Connectivity CICS IMS openUTM J2EE Container EJB EJB Anton Vorsamer JCA 1.0 Tuxedo SAP Siebel Baan .... J2EE 1.4 Adapter Externe Connectivity CICS IMS openUTM J2EE Container EJB MDB Anton Vorsamer JCA 1.5 JCA 1.5 Tuxedo SAP Siebel Baan .... JCA Resource Adapter System Schnittstellen (Outbound) Connection Management Pooling etc. Transaction Management Propagierung derJ2EE Transaktion zum EIS (Host) System Security Management Abbildung der J2EE Security auf die EIS (Host) Security Anton Vorsamer JCA Resource Adapter Schnittstellen (Outbound) ConnectionFactory Im JNDI sichtbar, entspricht der JDBC Datasource bzw. den JMS Connectionfactories getConnection(); getConnection(...); Connection Die wichtigste Schnittstelle für den J2EE Programmierer Stellt Abstraktion einer Host Connection bzw. eines Host Service dar Weitere Klassen ConnectionSpec, z.B. zur Übergabe von Authentisierungdaten InteractionsSpec, z.B. Parametrisierung der Kommunikatioin Records, z.B. Definition der Übergabedaten Anton Vorsamer JCA 1.0 / 1.5 Outbound Connectivity public class HostAccessBean implements SessionBean { private EISConnectionFactory oltpserver; private EISConnection oltp; public void ejbCreate() { naming = new InitialContext(); oltpserver = naming.lookup("java:comp/env/eis/MyOltpConnect"); } public String callHost( String input ) { oltp = oltpserver.getConnection(); oltp.setServiceName ("<EIS_SPECIFIC_FUNCTION_NAME>"); oltp.snd(input); String output = oltp.rcv(); oltp.close(); return output; } Anton} Vorsamer JCA 1.0 / 1.5 Outbound Connectivity (CCI) public class HostAccessBean implements SessionBean { private ConnectionFactory oltpserver; private Connection oltp; public void ejbCreate() { naming = new InitialContext(); oltpserver = naming.lookup("java:comp/env/eis/MyOltpCciConnect"); } public String callHost( String input ) { oltp = oltpserver.getConnection(); Interaction ix = oltp.createInteraction(); CciCustomRecord in = new CciCustomRecord(); CciCustomRecord out = new CciCustomRecord(); ix.setInteractionVerb = SYNC_SEND_RECEIVE; ix.setFunctionName("<EIS_SPECIFIC_FUNCTION_NAME>"); ix.execute (is, in, out); oltp.close(); return output; } } Anton Vorsamer JCA Resource Adapter System Schnittstellen (Inbound) Work Management Möglichkeit des „Listening“ auf eingehende Verbindungen Message Inflow Behandlung eingehender Nachrichten Transaction Inflow Propagierung der EIS (Host) Transaktion zur J2EE Plattform EJB Invocation (Message Driven Bean) Anton Vorsamer JCA Resource Adapter Anwender Schnittstellen (Inbound) Behandlung der Daten über Message Driven Beans MessageListener Schnitstelle(n) void onMessage(OltpMessage in) OltpMessage onMessage(OltpMessage in) ... Datenformate der MessageListener Schnitstelle OltpMessage msg msg.getText() msg.getBytes() ... Anton Vorsamer JCA 1.5 Inbound Connectivity public class SimpleMessagedrivenBean implements MessageDrivenBean ,OltpMessageListener { MessageDrivenContext ctx; public void setMessageDrivenContext (MessageDrivenContext { this.ctx = ctx; } public void ejbCreate(){...} public void ejbRemove(){...} public OltpMessage onMessage(OltpMessage msg) { ... } Anton} Vorsamer ctx) Behandlung von Host Daten Java und COBOL ? Java / Cobol Kommunikation 01 MGET-MSG. 03 ACCOUNT-NR 03 AMOUNT smsg = "4711 100.00 " //12345678901234567890 send(smsg); rmsg = rcv(); ... balance = rmsg.substr(10,10); 01 MPUT-MSG. 03 BOOKING-CODE 03 BALANCE Abzählen von Byte Positionen Fehleranfällig Problematisch bei Änderungen der Nachrichtenstruktur Anton Vorsamer PIC 9(10). PIC 9(10). PIC X(10). PIC 9(10) Java / Cobol Kommunikation 01 MGET-MSG. 03 ACCOUNT-NR 03 AMOUNT MgetMsg.setAccountNr(12345678); MgetMsg.setAmount(100.00); ... send(MgetMsg); MputMsg = rcv(); ... MputMsg.getBalance(); MputMsg.getBookingCode(); 01 MPUT-MSG. 03 BOOKING-CODE 03 BALANCE Zugriff über Namen Gleicher Name = Gleiche Information Tool Unterstützung (Compiler) Anton Vorsamer PIC 9(10). PIC 9(10). PIC X(10). PIC 9(10) BeanConnect Cobol2Java Tooling Erzeugen einer XML Beschreibung durch COBOL Compiler Übertragen der XML Datei zur Java Plattform Bearbeiten der XML Datei, Generierung von Java Klassen java -classpath lib/cob2java.jar;lib/xalan.jar;lib/xercesImpl.jar;lib/xmlParserAPIs.jar de.siemens.cob2java.Cob2Java samples/cobkb.xml de.vorsamer.cob2java java KCKBKOPF Anton Vorsamer BeanConnect Cobol2Java Programmierung import de.siemens.cob2java.cobtypes.*; import de.vorsamer.cob2java.*; // my generated package ..... Kckbkopf kb = new Kckbkopf(); // my generated class utm.rcv (Kckbkopf); // fills the data during data receive PicX user = kb.getKcbenid(); String lterm = kb.getKclogter().toTrimmedString(); Pic9Comp lkb = kb.getKclkbpb(); Anton Vorsamer Brückenschlag zum Web Nutzung von Webservices J2EE Zugriff über das Web EJB Container Client Client Client Client HTTP Client + XML Client Anton Vorsamer Web Container : HTML/XML Axis SOAP Engine EJB EJB JMS Web Services Architektur WSDL Service Requester Anton Vorsamer WebService Descriptions Service Registry Call (SOAP) WSDL Service Provider WebService Host Services als Web Services OLTP Dienste zugreifbar als Web Service Erzeugen einer WSDL Service Definition (.wsdl file) Deployment in der J2EE Plattform oder z.B. auch Apache AXIS (.wsdd file) J2EE SOAP Server (z.B. auch Axis) Bedient die HTTP SOAP Requests Wandelt diese in EJB Aufrufe um Anton Vorsamer Szenarien OLTP (LU6 / OSI-TP) RMI / IIOP HTTP / SOAP Web Server SOAP Servlet Application Server EJB J2EE Client JCA Connector SOAP Client Web Browser JVM JVM Web Server App. Server Service Program TP Monitor XA XA lokales DBMS Anton Vorsamer OLTP Server lokales DBMS Szenarien OLTP Client Verbindung SOAP / HTTP Verbindung OLTP Server Web Server SOAP Servlet SOAP Client Web Browser Java Client JCA Connector Service Program JVM Web Server TP Monitor XA HTML & Applets Servlets Anton Vorsamer local DBMS Kunden Lösungen KBA Auskunftsdienste Kraftfahrtbundesamt / Flensburg Anton Vorsamer Technische Zulassung von Fahrzeugen Kontrolle von Herstellern und Prüfungsstellen Zentrale Datenbank: Fahrzeuge und Fahrzeughalter Führerscheine Verkehrssünder Register Zugriff durch externe Behörden: Polizei der Länder BKA Architektur Zulassungstellen HTML/HTTP BS2000/OSD J2EE-Web Server XML / HTTP Servlets Bean Connect Polizei XML / HTTP Anton Vorsamer UPIC über TCP/IP BfA ReHa Kliniken: Online Buchungsverfahren BfA / Berlin Rehabilitation Rente und Altervorsorge Grundsicherung ReHa Anton Vorsamer Kliniken BfA - Architektur BfA XML/https XML/https externe Leistungsträger Verschlüsselung BS2000 / openUTM XML/https Klinikbelegung Anton Vorsamer ReHa (Host) Verfahren ... vielen Dank Anton Vorsamer