370 likes | 487 Views
Brückenschlag zwischen J2EE 1.4 und Mainframe. Plug&Play für Hostanwendungen über JCA 1.5?. IT Szenario. Host Systeme. Application Server. Web Client. Web Server. HTTP. externer Server, ERP Systeme. HTTP + XML. Web Services. DB Server. Externe Server.
E N D
Brückenschlag zwischen J2EE 1.4 und Mainframe Plug&Play für Hostanwendungen über JCA 1.5?
IT Szenario Host Systeme ApplicationServer Web Client Web Server HTTP externer Server,ERP Systeme HTTP + XML Web Services DB Server Externe Server
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
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
Charakterisierung von Host Services (2) • Wie können Host Services aufgerufen werden? • Direkt über Host Protokolle LU6, OSI-TPi.d.R. über entsprechende Client Bibliotheken der Hersteller • Gibt es für die gängigen PlattformenWindows, Unix, Java, ... • Vertreter sind ECI (IBM), UPIC (FSC), JCO (SAP) usw. • Diese Funktionen werden mittlerweile auch als J2EE konforme Resource Adapter (JCA Connector) angeboten
FSC / BS2000/OSD IBM / z/OS Host Connectivity J2EE ApplicationServer andere Unisys über OSI-TP
BS2000 TerminalService J2EE Applicationserver EJB Component EJB Component EJB Component EJB Component z/OS TerminalService Host Integration „Screen-Scraping“ Terminal 9750 Terminal Connectors EJB Container Access Control Terminal 3270 Transaction Synchronisation / Commmunication
Host Asyn.Program J2EE Applicationserver MQ MQ EJB Component EJB Component JMS EJB Component EJB Component MQ MQ Host Integration via Message Queues 2. TA 1. TA EJB Container 3. TA 5. TA Access Control 4. TA Transaction Synchronisation / Commmunication MQ kann sein: • JMS • MQSeries • UTM Message Queues (FPUT/DPUT) • CICS Queues • 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 OLTPService J2EE Applicationserver OSI-TP System EJB Component EJB Component OLTPService EJB Component EJB Component Host Integration über J2EE Transaktionen Connectoren LU6 & OSI-TP synchrones and asynchrones Messaging EJB Container Access Control CICS / IMS Transaction Synchronisation / Commmunication OLTPService
WebContainer EJB EJB Servlets+JSPs J2EE Architektur EnterpriseInformationSysteme : EJBContainer Client Relationale Datenbanken JDBC Client Connectors Client Connectors Host AnwendungenERP Systeme MDB Client Host MQ JMS Client
J2EE Connector Architektur JCA 1.0 / 1.5 Resource AdapterPlug & Play ?
EJB EJB J2EE 1.3 Adapter Externe Connectivity CICS IMS openUTM Tuxedo SAP Siebel Baan .... J2EEContainer JCA 1.0
EJB MDB J2EE 1.4 Adapter Externe Connectivity CICS IMS openUTM Tuxedo SAP Siebel Baan .... J2EEContainer JCA 1.5 JCA 1.5
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
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
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; } }
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; } }
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)
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() ...
JCA 1.5 Inbound Connectivity public class SimpleMessagedrivenBean implements MessageDrivenBean ,OltpMessageListener { MessageDrivenContext ctx; public void setMessageDrivenContext (MessageDrivenContext ctx) { this.ctx = ctx; } public void ejbCreate(){...} public void ejbRemove(){...} public OltpMessage onMessage(OltpMessage msg) { ... } }
Behandlung von Host Daten Java und COBOL ?
Java / Cobol Kommunikation smsg = "4711 100.00 " //12345678901234567890 send(smsg); rmsg = rcv(); ... balance = rmsg.substr(10,10); 01 MGET-MSG. 03 ACCOUNT-NR PIC 9(10). 03 AMOUNT PIC 9(10). 01 MPUT-MSG. 03 BOOKING-CODE PIC X(10). 03 BALANCE PIC 9(10) Abzählen von Byte Positionen FehleranfälligProblematisch bei Änderungen der Nachrichtenstruktur
Java / Cobol Kommunikation MgetMsg.setAccountNr(12345678); MgetMsg.setAmount(100.00); ... send(MgetMsg); MputMsg = rcv(); ... MputMsg.getBalance(); MputMsg.getBookingCode(); 01 MGET-MSG. 03 ACCOUNT-NR PIC 9(10). 03 AMOUNT PIC 9(10). 01 MPUT-MSG. 03 BOOKING-CODE PIC X(10). 03 BALANCE PIC 9(10) Zugriff über Namen Gleicher Name = Gleiche InformationTool Unterstützung (Compiler)
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
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();
Brückenschlag zum Web Nutzung von Webservices
WebContainer : EJB EJB RMI / IIOP HTTP +XML AxisSOAPEngine HTML/XML J2EE Zugriff über das Web EJBContainer Client RMI / IIOP Client Client Client Client JMS Client
WebServiceDescriptions Publish (UDDI) Find (UDDI) ServiceRegistry WSDL WSDL ServiceRequester ServiceProvider Call (SOAP) WebService Web Services Architektur
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
Web Server SOAP Client WebBrowser Szenarien OLTP(LU6 / OSI-TP) RMI / IIOP HTTP / SOAP OLTP Server Application Server SOAP Servlet EJB J2EE Client JCAConnector ServiceProgram JVM JVM Web Server App. Server TP Monitor XA XA lokales DBMS lokales DBMS
SOAP Client WebBrowser Szenarien OLTP Client Verbindung SOAP / HTTPVerbindung OLTP Server Web Server SOAP Servlet Java ClientJCA Connector ServiceProgram JVM Web Server TP Monitor XA local DBMS HTML & AppletsServlets
KBA Auskunftsdienste Kraftfahrtbundesamt / Flensburg • Technische Zulassung von Fahrzeugen • Kontrolle von Herstellern und Prüfungsstellen • ZentraleDatenbank:Fahrzeuge und FahrzeughalterFührerscheineVerkehrssünder Register • Zugriff durch externe Behörden:Polizei der LänderBKA
Architektur Zulassungstellen HTML/HTTP BS2000/OSD J2EE-Web Server XML/HTTP Servlets UPIC überTCP/IP BeanConnect Polizei XML/HTTP
BfA ReHa Kliniken: Online Buchungsverfahren BfA / Berlin • Rehabilitation • Rente und Altervorsorge • Grundsicherung • ReHa Kliniken
BfA - Architektur BfA BS2000 / openUTM XML/https Verschlüsselung XML/https externeLeistungsträger XML/https ReHa (Host) Verfahren Klinikbelegung