CICS Web Services Tooling und Runtime - Deutsch - Isabel
Transcrição
CICS Web Services Tooling und Runtime - Deutsch - Isabel
CICS Web Service Runtime und Tooling Dieses Dokument gibt einen Überblick über die Web Service Unterstützung unter CICS. Betrachtet werden sollen sowohl Werkzeuge für die Generierung der notwendigen Artefakte als auch die Laufzeitumgebung im CICS. Es empfiehlt sich, als Machbarkeitsstudie zunächst die mitgelieferte Beispielanwendung CICS Catalog Manager zu installieren. Dies wird im CICS Web Services Guide beschrieben im Kapitel "Chapter 15. The CICS catalog manager example application" http://pic.dhe.ibm.com/infocenter/cicsts/v4r2/topic/com.ibm.cics.ts.webservices.doc/dfhws_pdf.pdf Hinweis: Die Betrachtung der Nutzung des Axis2 Web Service Support ab CICS TS V4.2 wird in diesem Dokument weitestgehend ausgeklammert. Die Bereitstellung von Java Programmen als Web Service Provider oder Requester im CICS ist hier beschrieben: http://pic.dhe.ibm.com/infocenter/cicsts/v4r2/topic/com.ibm.cics.ts.webservices.doc/tasks/dfhws_ using_java_with_web_services.html Inhalt CICS Web Service Laufzeitumgebung.........................................................................................2 Voraussetzungen.....................................................................................................................2 CICS Ressourcendefinitionen ..................................................................................................2 Transport Infrastruktur (Provider) >> TCPIPService ..............................................................2 Message Handler und SOAP Header Verarbeitung >> PIPELINE .........................................3 URIMap................................................................................................................................5 Webservice ..........................................................................................................................6 Generierung der Artefakte ...........................................................................................................6 Konvertierungstypen ................................................................................................................6 Vergleich ..............................................................................................................................6 Verwendete Parser...............................................................................................................6 Entwicklungsszenarien ............................................................................................................7 Werkzeuge..................................................................................................................................8 CICS Web Service Assistant....................................................................................................8 Rational Developer for System z ..............................................................................................8 Start der Konvertierung ........................................................................................................9 Interpretierte Konvertierung mit RDz.....................................................................................9 Kompilierte Konvertierung mit RDz .....................................................................................11 Meet-in-the-Middle im RDz .................................................................................................12 CICS Deployment Unterstützung ........................................................................................13 Zusammenfassung....................................................................................................................14 Anhang .....................................................................................................................................15 Vorbereitung für CICS Deployment Unterstützung ..............................................................15 CICS Web Service Laufzeitumgebung Voraussetzungen 1. Language Environment® support for PL/I muss aufgesetzt sein (siehe CICS Transaction Server for z/OS Installation Guide). Der Parser wird für das Parsen der PIPELINE XML Konfigurationsdatei benötigt. 2. z/OS Unterstützung für Unicode: die z/OS Conversion Services müssen aktiviert und die Conversion Images installiert sein. 3. Der CICS System Initialization Parameter USSHOME muss gesetzt sein und dem z/OS UNIX Verzeichnis entsprechen, unter dem CICS via DFHISTAR installiert wurde. Der Default für CICS TS V4.2 ist /usr/lpp/cicsts/cicsts42, was in diesem Dokument auch als Annahme getroffen wird. CICS Ressourcendefinitionen Folgende Ressourcen sind im CICS notwendig für Web Service Support: • PIPELINE • WEBSERVICE • URIMAP (für Requester optional) • TCPIPSERVICE (nur Provider und HTTP Transport, für MQ siehe Web Service Guide) Als Beispiel dienen die Definitionen in der mitgelieferten Gruppe DFH$EXWS. Transport Infrastruktur (Provider) >> TCPIPService Um einen Web Service Request annehmen zu können, muss für den entsprechenden Transport ein Empfänger im CICS bereitstehen. Für HTTP übernimmt diese Aufgabe ein TCPIPService, der einen Port öffnet. CICS Web Service Support kann alternativ auch über MQ angeboten werden in diesem Fall müssen entsprechend Queues und Trigger Prozesse definiert werden. Als Beispiel kann der mitgelieferte TCPIPSERVICE EXMPPORT der Gruppe DFH$EXWS verwendet werden - gegebenenfalls nach Anpassung des Ports - der folgende Eigenschaften besitzt: • Urm: DFHWBAAX • Protocol: HTTP • Transaction: CWXN Message Handler und SOAP Header Verarbeitung >> PIPELINE CICS verwendet zur Verarbeitung der SOAP Nachricht sogenannte PIPELINE Ressourcen. In deren Konfigurationsdatei werden Programme zur Verarbeitung der Nachricht und ihrer Header festgelegt. CICS liefert folgende mit: • SOAP Message Handlers um SOAP 1.1 oder 1.2 Nachrichten zu verarbeiten • • • MTOM Handler zur Unterstützung des MTOM/XOP Standards Security Handler für Teile des Web Service Security Rahmenwerkes Header Verarbeitungsprogramme für den Web Service Atomic Transaction Standard (WS-AT) für Transaktionalität Zusätzlich ist es jederzeit möglich, eigene Handler Programme zu schreiben. Als Beispiel dienen die mitgelieferten PIPELINE Ressourcen der Beispielgruppe DFH$EXWS EXPIPE01 - für CICS als Web Service Provider EXPIPE02 - für CICS als Web Service Requester Eine PIPELINE besitzt u.a. folgende Attribute: • Configuration File: XML Datei zur Beschreibung der einzubeziehenden Handler • Shelf: temporäres Verzeichnis der Pipeline zur Ablage von WSBind Files • WS Directory (pickup): Verzeichnis, aus dem die PIPELINE WSBind Files auflesen kann, um die zugehörige Webservice und URIMap Ressource daraus automatisch zu generieren Beispiele für das Configuration File befinden sich im CICS USSHOME (default /usr/lpp/cicsts/cicsts42/samples/pipelines) EXPIPE01 und EXPIPE02 verwenden sehr rudimentäre Konfigurationen: basicsoap11provider.xml <?xml version="1.0" encoding="EBCDIC-CP-US"?> <provider_pipeline xmlns="http://www.ibm.com/software/htp/cics/pipeline"> <service> <terminal_handler> <cics_soap_1.1_handler/> </terminal_handler> </service> <apphandler>DFHPITP</apphandler> </provider_pipeline> Ob eine PIPELINE für Requester oder Provider gilt, wird in ihrer Konfiguration durch das oberste Element festgelegt (<provider_pipeline> oder <requester_pipeline>). Das Pickup Verzeichnis dient der automatischen Generierung von Webservice Ressourcen und beim Provider auch URIMaps aus dort befindlichen WSBind Files. Pickup-Scan wird implizit initiiert bei der Installation der PIPELINE und kann explizit ausgeführt werden durch den Befehl EXEC CICS PERFORM PIPELINE(<name>) SCAN. Empfehlung: Die mitgelieferten Beispiele dienen der Machbarkeitsstudie und sollten nicht bearbeitet werden. Für eigene CICS Web Services sollten deswegen eigene PIPELINE Ressourcen nach sinnvollen Namenskonventionen erstellt werden mit eigenen Verzeichnissen im z/OS UNIX für Shelf, Pickup Verzeichnis und Konfigurationsdatei. URIMap Die URIMap dient CICS als Web Service Provider, um einen eingehenden Request über einen Pfad auf weitere CICS Ressourcen zu mappen. Dazu gehört eine PIPELINE zur Verarbeitung und schließlich eine Webservice Ressource, die das Endprodukt der PIPELINE in eine Sprachstruktur (Cobol, PL/I, …) umwandelt und die Geschäftslogik aufruft. Es wird empfohlen, die URIMap für Provider über den Pickup-Scan der PIPELINE zu generieren. Ist CICS Web Service Requester, so ist die URIMap optional. Sie kann aber verwendet werden, um die Adresse des aufzurufenden Service (den Endpunkt) aus der Anwendungslogik und der Webservice Ressource herauszulösen. >>-INVOKE-SERVICE(data-value)--CHANNEL(data-value)--------------> >--OPERATION(data-value)--+--------------------+----------------> +-URI(data-value)----+ '-URIMAP(data-value)-' >--+---------------------------------------------+------------->< '-SCOPE(data-value)--+----------------------+-' '-SCOPELEN(data-value)-' Wird kein Parameter mitgegeben, so wird der Endpunkt in der aufgerufenen Webservice Ressource gesucht. Über den URI Parameter kann ein fester Endpunkt gesetzt werden, was nicht empfohlen wird. Wird der Parameter URIMAP stattdessen verwendet, so wird die entsprechende URIMap nach den Endpunkt befragt, wo dieser jederzeit flexibel angepasst werden kann. Webservice Eine Webservice Ressource ist über das gleichnamige Attribut mit einem WSBind File verknüpft, das als "Anleitung" für CICS gesehen werden kann, wie zwischen XML und Sprachstrukturen (Cobol, PL/I) konvertiert wird. Auf die Erstellung von WSBind Files geht das Kapitel der Generierung näher ein. Ist CICS Web Service Provider, so konvertiert der Webservice mittels WSBind File den eingegangenen Request (nach vorangegangener PIPELINE Prozessierung) und ruft anschließend das Geschäftsprogramm auf. Für den Requester dient der Webservice als "Ansprechpartner", der innerhalb CICS den aufzurufenden Provider repräsentiert und über EXEC CICS INVOKE SERVICE genutzt werden kann. In beiden Fällen wird empfohlen, den Webservice über den Pickup-Scan der PIPELINE generieren zu lassen. Generierung der Artefakte Wie im Runtime Kapitel bereits angedeutet, benötigt CICS für den Web Service Support ein sogenanntes WSBind File, auf dessen Generierung hier näher eingegangen wird. Hinweis: Das WSBind File wird nicht benötigt für Java Programme, die unter Ausnutzung des Axis2 Support ab CICS TS V4.2 als Requester oder Provider fungieren sollen. Diese Funktionalität wird in diesem Dokument nicht näher erläutert. Konvertierungstypen Grundsätzlich wird unterschieden zwischen Interpretiert (Interpretive) und Kompiliert (Compiled) Konvertierung. Interpretierte Konvertierung bezieht sämtliche benötigten Informationen aus der Interpretation des WSBind Files zur Laufzeit. Bei Kompilierter Konvertierung wird ebenfalls ein WSBind File verwendet, das aber auf ein zusätzliches Cobol Programm (Converter) verweist, das die eigentliche Konvertierung übernimmt. CICS bietet über den mitgelieferten Web Service Assistant (WSA) diverse Batch Jobs ausschließlich für die Interpretierte Konvertierung. Rational Developer for System z (RDz) unterstützt beide. Vergleich Die kompilierte Konvertierung unterstützt mehr Datentypen, beispielsweise Cobol OCCURS DEPENDING ON oder REDEFINE. Dafür unterstützt die interpretierte Konvertierung mehr Sprachen. Die Performance beider Varianten weist keine signifikanten Unterschiede auf. Verwendete Parser Die Interpretierte Konvertierung verwendet folgende Parser • XMLSS für Parsen des SOAP Envelopes • DFHPITP - ein CICS-eigenes Programm für das Parsing von SOAP Bodys • IBM XML Toolkit für WS-Security Die kompilierte Konvertierung setzt für das Parsen des SOAP Bodys auf ein Cobol Konverterprogramm, dass je nach Aktualität des vorhandenen Compilers im COMPAT Modus oder unter Ausnutzung von XMLSS generiert werden kann. Hinweis: das Konvertierungsprogramm DFHPITP wird ab CICS TS V4.2 auch als Java Programm angeboten, das unter Nutzung des Axis2 Rahmenwerkes im CICS JVM Server das Parsen zAAP-eligibel vornehmen kann. Entwicklungsszenarien Abhängig davon, was zum Zeitpunkt der Generierung bereits besteht und was generiert wird, lassen sich folgende Szenarien benennen: • Bottom-up: bei dem die Geschäftsprogramme bereits bestehen und die Web Service Definition "von unten nach oben" generiert wird • Top-down: bei dem eine Web Service Definition bereits vorliegt und die Geschäftsprogramme "von oben nach unten" dazu neu erstellt werden • Meet-in-the-middle: bei dem sowohl die Definition des Web Services als auch die Geschäftslogik bereits existieren und man sich "in der Mitte treffen muss". Provider Interpretiert x x Kompiliert x Requester Interpretiert Kompiliert Bottom-up Top-down x Meet-in-the-middle* x Bottom-up MTOM ** x * Die Interpretierte Konvertierung bietet keine direkte Unterstützung für das Meet-in-the-Middle Szenario. Allerdings ist es möglich, mit Hilfe des Top-down Szenarios manuell ein Wrapper Programm zu schreiben, das den Request so annimmt wie von der Web Service Definition gefordert und nach Anpassungen der Daten die bestehende Geschäftslogik aufruft. ** diese Option ist für die Verwendung von IBM Data Power gedacht, die in diesem fall statt CICS die XML Konvertierung vornimmt und die fertige Sprachstruktur an CICS als MTOM Attachment einer SOAP Nachricht übermittelt. CICS braucht in diesem Fall lediglich das Attachment vom eingehenden SOAP Request zu holen. Diese se Option ist nur im RDz verfügbar. Empfehlung: Ist CICS Web Service Provider, so empfiehlt sich, immer zuerst das Design der Web Service Definition vorzunehmen. Nur dadurch kann die optimale Granularität und eine saubere Schnittstellenbeschreibung gewährleistet werden. Wird die Beschreibung im Bottom-up Modus generiert, so müssen meist unnötige Daten übertragen werden (zu grob granular) oder für eine Aufgabe mehrere Anfragen gesendet werden (zu fein granular). Werkzeuge CICS Web Service Assistant Der CICS WSA unterstützt ausschließlich Interpretierte Konvertierung (ausgenommen MTOM). Für den Bottom-up Modus steht der Batch Job DFHLS2WS zur Verfügung, der aus der Geschäftslogik und weiteren Parametern wie Sprache (COBOL, PLI, C, CPP) und aufzurufendes Programm das zugehörige WSBind File und die Web Service Beschreibung als WSDL File erzeugt. Für den Top-Down Modus wird DFHWS2LS verwendet. Aus einem WSDL File und anderen Parametern wird ebenfalls ein WSBind File erzeugt sowie Sprachstrukturen. Wird ein Requester erstellt, so muss dieser diese Strukturen verwenden, um den Request zu formulieren und die Antwort auszulesen. Wird ein Provider erstellt, so muss er diese verwenden, um den Request zu empfangen und die Antwort zu formulieren. Weitere Informationen zum CICS WSA sind im CICS Web Service Guide und im Infocenter zu finden. Rational Developer for System z Sowohl Interpretierte als auch Kompilierte Konvertierung werden durch Wizards unterstützt. Diese bieten neben der Generierung auch verbesserte Deployment Optionen, um beispielsweise das WSBind File automatisch in das Pickup Verzeichnis der PIPELINE zu kopieren. Dadurch kann Entwicklung und Test vollständig im RDz stattfinden, ohne dass ein Medienbruch durch den Wechsel auf die z/OS Konsole notwendig ist. Start der Konvertierung RDz unterstützt den Einstieg in CICS Web Services durch einen View namens "Getting Started", der - falls noch nicht geöffnet - über die Menüleiste mit Window >> Show View >> Other unter der Kategorie Help geöffnet werden kann. Dieser führt Schritt für Schritt durch die Konvertierung Interpretierte Konvertierung mit RDz Für die Interpretierte Konvertierung wird der gleiche Generator auf der Workstation aufgerufen, den auch der CICS WSA auf z/OS verwendet. Der Wizard dient der besseren und intuitiveren Erfassung der Eingabeparameter. Ein weiterer Vorteil gegenüber dem CICS WSA ist, dass im Bottom-up Moduls ausgewählt werden kann, welche Elemente für Request und Response notwendig sind und welche nicht, wie in folgendem Beispiel. Außerdem generiert RDz im interpretierten Top-down Modus (sowohl für Requester als auch Provider) ein Template File als eine Art Programskelett zur Orientierung. Kompilierte Konvertierung mit RDz Die Wizards der Kompilierten Konvertierung unterscheiden sich im Wesentlichen durch die zusätzlichen Optionen für das Cobol Programm. Hier können verschiedene Parsing Optionen ausgewählt werden, die sich unterschiedlich auf Geschwindigkeit und Verbrauch auswirken. Meet-in-the-Middle im RDz Der entsprechende Wizard im RDz importiert die WSDL für den gewünschten Web Service sowie die Cobol oder PL/I Geschäftslogik, die diesen als Provider zur Verfügung stellen soll. Über Mapping Files wird festgelegt, welches Feld des Requests wohin in der Struktur des bestehenden Programms übertragen wird bzw. umgekehrt, welches Feld aus der Antwort des Programms wohin in die Response Struktur. Dabei können die Daten direkt übertragen werden wie im folgenden Screenshot (Move) oder auch transformiert werden. Im Anschluss wird bei der kompilierten Meet-in-the-middle Konvertierung - ähnlich wie bei der kompilierten Bottom-Up Konvertierung - ein Cobol Konverterprogramm erzeugt, was die Umwandlung zwischen XML und den Sprachstrukturen übernimmt. CICS Deployment Unterstützung Sowohl Interpretierte als auch Kompilierte Konvertierung benötigen den anschließenden Transport des WSBind Files in das Pickup Verzeichnis einer PIPELINE. RDz ermöglicht, angebundene CICS Regions nach installierten PIPELINE Ressourcen zu durchsuchen und diesen Schritt automatisch durchzuführen. Hierzu ist die Anbindung von CICS an RDz notwendig, mehr dazu im Anhang unter "Vorbereitung für CICS Deployment Unterstützung" Zusammenfassung CICS bietet Web Service Support, um selbst als Provider einen Web Service anzubieten oder als Requester andere Web Services aufzurufen. Dabei werden unterschiedliche Szenarien unterstützt, von denen aber wegen des sauberen Designs der Meet-in-the-Middle Ansatz zu bevorzugen ist. Als Werkzeuge stehen der batch-basierte CICS Web Service Assistant sowie die Wizard-getriebene IDE des Rational Developer for System z zur Verfügung. Beide Werkzeuge ermöglichen die Interpretierte Konvertierung, bei der sämtliche Konvertierungsinformation in ein WSBind File generiert wird. Alternativ kann im RDz die Kompilierte Konvertierung verwendet werden, die ein Cobol Pogramm zum Konvertieren verwendet und damit Cobol-spezifische Optimierungen wie die Verwendung von XML System Services Parsern nutzen kann. Zusätzlich erleichtert RDz den Entwicklungszyklus durch CICS Deployment Unterstützung. Anhang Vorbereitung für CICS Deployment Unterstützung Um nahtlos von der Generierung zum Deployment übergehen zu können benötigt RDz Anbindung an CICS. Hierzu existieren momentan zwei Optionen: • CICS Management Interface CMCI - die strategische, vom CICS bereitgestellte RESTful Schnittstelle, verfügbar ab CICS TS V4.1 und bereits teilweise nutzbar im RDz • CICS Resource Definition Server - auch Application Deployment Manager (ADM) genannt und von RDz mitgeliefert, weil RDz die Anbindung damals auch für ältere CICS Versionen benötigt hat In der aktuellen Version RDz 8.5 benötigen viele Wizards für das Deployment ins CICS noch die RDz proprietäre Anbindung über ADM. Diese sollen aber in Zukunft transparent für den Endbenutzer auf CMCI umgestellt werden. Für dieses Dokument wird deswegen an dieser Stelle noch eine ADM Verbindung verwendet. Die Einrichtung von ADM ist im RDz Host Installation Guide beschrieben und beinhaltet hauptsächlich Folgendes: • Öffnung eines Ports via TCPIPService • Installation einer URIMap, damit eingehende Requests vom RDz auf die entsprechenden Module gemappt werden können • Einbindung entsprechender Lademodule ins CICS, die den Request verarbeiten • Für CICS Versionen älter als 4.1 muss zusätzlich eine Web Service Infrastruktur mit PIPELINE aufgesetzt werden Anschließend muss über den Host Connections View (Öffnen Via Window >> Show View >> Other) die Verbindung erstellt werden: mittels "Add" Button den "CICS Resource Definition Server" hinzufügen (via REST ab CICS 4.1, sonst via Web Services) und auf "Connect" klicken.