SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
Mainframe-Zugriff via Java 
Bereitstellen eines Mainframe CICS Programms 
über den Mule ESB als WebService mit 
Hilfe von LegStar 
Dipl.-Ing. Frank Rahn 
Freiberuflicher Berater für IT-Projekte 
http://www.frank-rahn.de 
© 2014 Frank Rahn, http://www.frank-rahn.de
Zur Person 
Seit 1992 arbeite ich als freiberuflicher 
unabhängiger Software-Architekt und 
-consultant. 
Seitdem beschäftige ich mich mit dem 
Entwurf und der Realisierung von An-wendungen 
und verfüge über umfang-reiche 
Erfahrungen in der Integration 
von Anwendungen. 
Ich berate vornehmlich Finanzdienst-leister 
im Bereich Java EE und lege 
besonderes Augenmerk auf service-orientierte 
Architekturen. 
Dipl.-Ing. Frank Rahn 
Neusser Straße 594 
50737 Köln 
Tel. +49 221 67771830 
Fax +49 221 9742947 
Mail frank@frank-rahn.de 
© 2014 Frank Rahn, http://www.frank-rahn.de 2
Inhalt | Aufgabenstellung 
Erstellung eines Integrationsservice für den Mule ESB 
● Schnittstelle soll ein Webservice (SOAP) sein 
● Zugriff auf das Mainframe COBOL CICS Programm PBK010 
● Einsatz des Open Source Tools LegStar for Mule ESB 
● Generierung von Transformatoren, die die Daten vom Mainframe 
(EBCDIC, COMP, etc.) in Java Objekte schreiben 
● Generieren von Adaptern, die das Mainframe Programm über den 
IBM CICS Web Support aufrufen 
© 2014 Frank Rahn, http://www.frank-rahn.de 3
Informationen | Source Repository | WSDL 
● Artikel auf meiner Homepage 
● http://www.frank-rahn.de/cobol-cics-legstar-mule-esb.html 
● Präsentation auf slideshare 
● http://de.slideshare.net/frankrahn/cobol-cicsleg-starmuleesb 
● Quellen des Beispiels 
● https://github.com/frank-rahn/mule/tree/master/cobol-cics-legstar-mule-esb 
● WSDL aus meinem XML-Namespace 
● http://xmlns.frank-rahn.de/ws/bic/1.0/ 
© 2014 Frank Rahn, http://www.frank-rahn.de 4
Installation Mule Studio & LegStar 
● Installation Mule Studio (Basiert auf Eclipse v3.5) 
● Kann unter folgender URL heruntergeladen werden 
● https://www.mulesoft.com/platform/mule-studio 
● Installation der LegStar Eclipse Plugins 
● Starten des Mule Studios und folgenden Menüpunkt aufrufen 
● Help → Install New Software... 
● Den Button Add... betätigen und die folgende URL eingeben 
● http://www.legsem.com/legstar/mule/eclipse/update 
● Das Plugin LegStar Mule Component Generator installieren 
● Optionale LegStar Eclipse Plugins finden Sie unter folgender URL 
● http://www.legsem.com/legstar/eclipse/update 
© 2014 Frank Rahn, http://www.frank-rahn.de 5
Installation LegStar modules for z/OS 
Es müssen die LegStar Mainframe Programme installiert werden 
● Der IBM CICS Web Support muss verfügbar sein 
● Herunterladen der LegStar distribution for z/OS unter folgender URL 
● http://www.legsem.com/legstar/legstar-transport/legstar-distribution-zos/do 
wnload.html 
● Installation der LegStar Mainframe Programme nach der Anleitung, die 
unter folgender URL zu finden ist 
● http://www.legsem.com/legstar/legstar-transport/legstar-distribution-zos/insta 
ll-instructions.html 
© 2014 Frank Rahn, http://www.frank-rahn.de 6
Funktionsweise von LegStar auf dem Mainframe 
● Aus dem Mule ESB heraus wird per LegStar Outbound Endpoint über 
HTTP der IBM CICS Web Support aufgerufen 
● Das IBM CICS ruft wiederum das LegStar Mainframe Programm 
LSWEBBIN (C/370 program) auf 
● Danach ruft das LegStar Mainframe Programm über den LegStar CICS 
Link Driver LSLNKBIN (C/370 library) das eigentliche Mainframe 
Programm, hier PBK010 (COMMAREA-driven COBOL program), auf 
© 2014 Frank Rahn, http://www.frank-rahn.de 7
Anlegen eines Projekts im Mule Studio 
● Auswahl über das Menü 
● File → New → Mule Project 
● Eingabe des Projektnamens 
● cobol-cics-legstar-mule-esb 
● Betätigen des Button Finish 
© 2014 Frank Rahn, http://www.frank-rahn.de 8
Anlegen des Inbound Endpoint 
● Generieren der JAXB Klassen 
mit Maven 
● src/main/etc/pom.xml 
● Verschieben der JAXB Klassen nach 
● src/main/java 
● Anlegen des Mule Flows 
● Name 
● cobol-cics-legstar-mule-esbFlow 
● Adresse für Inbound HTTP Endpoint 
● http://localhost:8080/pbk010 
● Service Klasse für Inbound SOAP Service 
● de.frank_rahn.xmlns.ws.bic._1_0.BicService 
© 2014 Frank Rahn, http://www.frank-rahn.de 9
Parameter des Mainframes für dieses Beispiel 
● CICS Transaktionsname BK01 
● Programmname PBK010 (COMMAREA-driven COBOL 
program) 
● Copystrecke Eingabe CBK010I 
● Copystrecke Ausgabe CBK010O 
● Verwendeter Zeichensatz IBM01141 
● User TD00123 
● Passwort geheim 
● URL des Mainframes http://mainframe.frank-rahn.de:4081 
● Pfad /CICS/BK01/LSWEBBIN 
© 2014 Frank Rahn, http://www.frank-rahn.de 10
Generierung der LegStar Komponenten 
● LegStar Structures mapping aus Input- und Output-Copystrecke 
generieren 
➔ Erstellt jeweils ein XML-Schema mit den Informationen aus der 
jeweiligen Copystrecke 
● LegStar Transformers aus den XML-Schemas generieren 
➔ Erstellt JAXB Klassen mit spezifischen Annotationen für den 
Mainframe 
➔ Generiert die Transformator-Klassen für die Erzeugung eines Byte 
Array als Übergabe an ein COBOL Programm 
● LegStar Operations mapping definieren 
● LegStar Mule Mainframe Adapter generieren 
➔ Legt eine mule-config.xml mit einem Flow an, der die LegStar 
Komponenten enthält 
© 2014 Frank Rahn, http://www.frank-rahn.de 11
LegStar Structures mapping der Eingabe 
generieren 1/3 
● Es wird die Copystrecke CBK010I.cpy benötigt 
● <PROJECT>/src/main/cixs/CBK010I.cpy 
● Starten des LegStar Wizard über eine der beiden Möglichkeiten 
● Menü : LegStar → New structures mapping... 
● Toolbar : 
© 2014 Frank Rahn, http://www.frank-rahn.de 12
LegStar Structures mapping der Eingabe 
generieren 2/3 
Namespace 
mit Version 
1.0 
© 2014 Frank Rahn, http://www.frank-rahn.de 13
LegStar Structures mapping der Eingabe 
generieren 3/3 
CBK010I.cpy 
auswählen 
© 2014 Frank Rahn, http://www.frank-rahn.de 14
LegStar Transformers für die Eingabe generieren 
1/2 
● Auf der Datei cbk010i.xsd das 
Context Menü öffnen und den 
Generator auswählen 
● <PROJECT>/cbk010i.xsd 
© 2014 Frank Rahn, http://www.frank-rahn.de 15
LegStar Transformers für die Eingabe generieren 
2/2 
Selektieren 
© 2014 Frank Rahn, http://www.frank-rahn.de 16
LegStar Structures mapping der Ausgabe 
generieren 1/3 
● Es wird die Copystrecke CBK010O.cpy benötigt 
● <PROJECT>/src/main/cixs/CBK010O.cpy 
● Starten des LegStar Wizard über eine der beiden Möglichkeiten 
● Menü : LegStar → New structures mapping... 
● Toolbar : 
© 2014 Frank Rahn, http://www.frank-rahn.de 17
LegStar Structures mapping der Ausgabe 
generieren 2/3 
Namespace 
mit Version 
1.0 
© 2014 Frank Rahn, http://www.frank-rahn.de 18
LegStar Structures mapping der Ausgabe 
generieren 3/3 
CBK010O.cpy 
auswählen 
© 2014 Frank Rahn, http://www.frank-rahn.de 19
LegStar Transformers für die Ausgabe 
generieren 1/2 
● Auf der Datei cbk010o.xsd das 
Context Menü öffnen und den 
Generator auswählen 
● <PROJECT>/cbk010o.xsd 
© 2014 Frank Rahn, http://www.frank-rahn.de 20
LegStar Transformers für die Ausgabe 
generieren 2/2 
Selektieren 
© 2014 Frank Rahn, http://www.frank-rahn.de 21
LegStar Operations mapping definieren 1/5 
● Starten des LegStar Wizard über eine der beiden Möglichkeiten 
● Menü : LegStar → New operations mapping... 
● Toolbar : 
© 2014 Frank Rahn, http://www.frank-rahn.de 22
LegStar Operations mapping definieren 2/5 
Namen in 
bk010 
ändern 
© 2014 Frank Rahn, http://www.frank-rahn.de 23
LegStar Operations mapping definieren 3/5 
Betätigen 
© 2014 Frank Rahn, http://www.frank-rahn.de 24
LegStar Operations mapping definieren 4/5 
Betätigen 
Betätigen 
© 2014 Frank Rahn, http://www.frank-rahn.de 25
LegStar Operations mapping definieren 5/5 
1. Auswählen 
2. Betätigen 
© 2014 Frank Rahn, http://www.frank-rahn.de 26
LegStar Mule Mainframe Adapter generieren 1/6 
Auswählen für 
Mule → Mainframe 
© 2014 Frank Rahn, http://www.frank-rahn.de 27
LegStar Mule Mainframe Adapter generieren 2/6 
Zeichensatz 
anpassen 
CICS Transaktion 
CWBA durch BK01 
ersetzen 
© 2014 Frank Rahn, http://www.frank-rahn.de 28
LegStar Mule Mainframe Adapter generieren 3/6 
Der LegStar Wizzard hat einen Mule Flow src/app/mule-config.xml 
erzeugt. Aus diesem Mule Flow müssen die LegStar Komponenten 
(Inbound Endpoint, 4* Transformer, Outbound Endpoint) in den Mule Flow 
der Anwendung übernommen werden. 
© 2014 Frank Rahn, http://www.frank-rahn.de 29
LegStar Mule Mainframe Adapter generieren 4/6 
Die globalen LegStar Transformers 
<!-- Transform serialized java objects to mainframe data --> 
<legstar:java-to-host-transformer name="pbk010JavaToHost" ... 
class="de.rahn.legstar.cixs.bk010.DfhcommareaToHostMuleTransfor... 
<!-- Transform mainframe data to serialized java objects --> 
<legstar:host-to-java-transformer name="pbk010HostToJava" ... 
class="de.rahn.legstar.cixs.bk010.HostToDfhcommareaMuleTransfor... 
<!-- Wrap mainframe data in a LegStar request for mainframe progr... 
<legstar:host-to-legstar-transformer name="pbk010HostToLegStar" ... 
<legstar:host-program programName="PBK010" 
maxDataLength="1338" ... /> 
</legstar:host-to-legstar-transformer> 
<!-- Unwrap LegStar response to mainframe program execution --> 
<legstar:legstar-to-host-transformer name="pbk010LegStarToHost" /> 
© 2014 Frank Rahn, http://www.frank-rahn.de 30
LegStar Mule Mainframe Adapter generieren 5/6 
Der globale Outbound Endpoint 
<!-- Legstar Outbound Endpoint --> 
<legstar:endpoint name="mainframeRequestEndpoint" ... 
address="legstar://mainframe.frank-rahn.de:4081/CICS/BK01/LSWEBBIN" 
/> 
Der Outbound Endpoint im Flow 
<flow name="cobol-cics-legstar-mule-esbFlow" ... 
... 
<outbound-endpoint ref="mainframeRequestEndpoint" ... 
transformer-refs="pbk010JavaToHost pbk010HostToLegStar" 
responseTransformer-refs="pbk010LegStarToHost pbk010HostToJava" /> 
... 
</flow> 
© 2014 Frank Rahn, http://www.frank-rahn.de 31
LegStar Mule Mainframe Adapter generieren 6/6 
Authentifizierung hinzufügen 
Das LegStar Plugin erfasst zwar die Authentifizierung (User ID und Password), aber 
schreibt sie nicht in den Mule Flow. Daher muss dieses noch nachgeholt werden. 
<!-- Legstar Outbound Endpoint --> 
<legstar:endpoint name="mainframeRequestEndpoint" ... 
address="legstar://TD00123:geheim@mainframe.frank-rahn.de:4081/CI.. 
Alternativ kann der LegStar Endpoint auch durch einen HTTP Endpoint ersetzt 
werden. 
<http:outbound-endpoint host="mainframe.frank-rahn.de" port="4081" 
path="CICS/BK01/LSWEBBIN" exchange-pattern="request-response" ... 
mimeType="application/octet-stream" 
user="TD00123" password="geheim" 
transformer-refs="pbk010JavaToHost pbk010HostToLegStar" 
responseTransformer-refs="pbk010LegStarToHost pbk010HostToJava" /> 
Dadurch besteht auch die Möglichkeit SSL/TLS zu verwenden. 
© 2014 Frank Rahn, http://www.frank-rahn.de 32
Transformer zwischen Webservice und LegStar 
Zum Abschluss müssen noch zwei Transformator-Klassen erstellt werden. 
Der Transformer Request → CBK010I wandelt das eingehende JAXB-Objekt 
(BicRequest) des Webservice in das entsprechende JAXB-Objekt 
(Dfhcommarea) von LegStar. 
Der Transformer CBK010O → Response wandelt das JAXB-Objekt 
(Dfhcommarea) von LegStar in das ausgehende JAXB-Objekt 
(BicResponse) des Webservices. 
© 2014 Frank Rahn, http://www.frank-rahn.de 33
Vielen Dank für 
Ihre Aufmerksamkeit! 
Dipl.-Ing. Frank Rahn 
Neusser Straße 594 
50737 Köln 
Tel. +49 221 67771830 
Fax +49 221 9742947 
Mail frank@frank-rahn.de 
© 2014 Frank Rahn, http://www.frank-rahn.de 34
Lizenzen 
Dieses Werk ist unter der Creative-Commons-Lizenz vom Typ 
Namensnennung-Keine Bearbeitung 3.0 Deutschland lizenziert. 
Um eine Kopie dieser Lizenz einzusehen, besuchen Sie 
http://creativecommons.org/licenses/by-nd/3.0/de/ oder schreiben 
Sie einen Brief an Creative Commons, 444 Castro Street, Suite 900, 
Mountain View, California, 94041, USA. 
© 2014 Frank Rahn, http://www.frank-rahn.de 35

Weitere ähnliche Inhalte

Andere mochten auch

Singaña vanessa practica word1
Singaña vanessa practica word1Singaña vanessa practica word1
Singaña vanessa practica word1
vane01si
 
Brot - pão por stella lenz
Brot  -  pão por stella lenzBrot  -  pão por stella lenz
Brot - pão por stella lenz
Sylvia Lenz
 
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
Fuchsy Fuchs
 
Escuela tradicional y nueva o activa grup 2
Escuela  tradicional  y nueva o activa grup 2Escuela  tradicional  y nueva o activa grup 2
Escuela tradicional y nueva o activa grup 2
Alina D-Cn
 
Manual de Excel
Manual de ExcelManual de Excel
Manual de Excel
Gian0796
 

Andere mochten auch (20)

Chikungunya.
Chikungunya.Chikungunya.
Chikungunya.
 
Jaguar coleccion invierno 2015 - calidad mail
Jaguar   coleccion invierno 2015 - calidad mailJaguar   coleccion invierno 2015 - calidad mail
Jaguar coleccion invierno 2015 - calidad mail
 
Singaña vanessa practica word1
Singaña vanessa practica word1Singaña vanessa practica word1
Singaña vanessa practica word1
 
marlyngarcia
marlyngarciamarlyngarcia
marlyngarcia
 
Presentación antenas
Presentación antenasPresentación antenas
Presentación antenas
 
Manuel Montoya Mercadeo en internet
Manuel Montoya Mercadeo en internetManuel Montoya Mercadeo en internet
Manuel Montoya Mercadeo en internet
 
Brot - pão por stella lenz
Brot  -  pão por stella lenzBrot  -  pão por stella lenz
Brot - pão por stella lenz
 
Manual de visual fox pro
Manual de visual fox proManual de visual fox pro
Manual de visual fox pro
 
Smartphone Betriebssysteme Windows Phone
Smartphone Betriebssysteme Windows PhoneSmartphone Betriebssysteme Windows Phone
Smartphone Betriebssysteme Windows Phone
 
Iteraciones o looping –
Iteraciones o looping –Iteraciones o looping –
Iteraciones o looping –
 
Indicadores ceaaces
Indicadores ceaaces Indicadores ceaaces
Indicadores ceaaces
 
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
„Denkt denn niemand an die Kinder?!“ Aufwachsen in der Postprivatsphäre
 
Escuela tradicional y nueva o activa grup 2
Escuela  tradicional  y nueva o activa grup 2Escuela  tradicional  y nueva o activa grup 2
Escuela tradicional y nueva o activa grup 2
 
Nuestro ecuador
Nuestro ecuadorNuestro ecuador
Nuestro ecuador
 
Manual de Excel
Manual de ExcelManual de Excel
Manual de Excel
 
Business bavaria 4-2012_de
Business bavaria 4-2012_deBusiness bavaria 4-2012_de
Business bavaria 4-2012_de
 
PERROSENKNTDR
PERROSENKNTDRPERROSENKNTDR
PERROSENKNTDR
 
Presentacion internet
Presentacion internetPresentacion internet
Presentacion internet
 
glogster y edmodo
 glogster y edmodo glogster y edmodo
glogster y edmodo
 
Ecogarden 2011 2012
Ecogarden 2011 2012Ecogarden 2011 2012
Ecogarden 2011 2012
 

Ähnlich wie Mainframe-Zugriff via Java

WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem KundenprojektWebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
OPITZ CONSULTING Deutschland
 
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
bneselov
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
Torsten Kleiber
 

Ähnlich wie Mainframe-Zugriff via Java (20)

Augmented Reality Workshop
Augmented Reality WorkshopAugmented Reality Workshop
Augmented Reality Workshop
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
 
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem KundenprojektWebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
 
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
Offlinefähige Browseranwendungen: Progressive Web-Apps mit Angular 2
 
DACHNUG50 CNX3 Monitoring.pdf
DACHNUG50 CNX3 Monitoring.pdfDACHNUG50 CNX3 Monitoring.pdf
DACHNUG50 CNX3 Monitoring.pdf
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Einführung Progressive Web App
Einführung Progressive Web AppEinführung Progressive Web App
Einführung Progressive Web App
 
Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep Dive
 
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009
 
Ionic 3
Ionic 3Ionic 3
Ionic 3
 
Java FX8 JumpStart - JUG ch - zürich
Java FX8   JumpStart - JUG ch - zürichJava FX8   JumpStart - JUG ch - zürich
Java FX8 JumpStart - JUG ch - zürich
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 

Mainframe-Zugriff via Java

  • 1. Mainframe-Zugriff via Java Bereitstellen eines Mainframe CICS Programms über den Mule ESB als WebService mit Hilfe von LegStar Dipl.-Ing. Frank Rahn Freiberuflicher Berater für IT-Projekte http://www.frank-rahn.de © 2014 Frank Rahn, http://www.frank-rahn.de
  • 2. Zur Person Seit 1992 arbeite ich als freiberuflicher unabhängiger Software-Architekt und -consultant. Seitdem beschäftige ich mich mit dem Entwurf und der Realisierung von An-wendungen und verfüge über umfang-reiche Erfahrungen in der Integration von Anwendungen. Ich berate vornehmlich Finanzdienst-leister im Bereich Java EE und lege besonderes Augenmerk auf service-orientierte Architekturen. Dipl.-Ing. Frank Rahn Neusser Straße 594 50737 Köln Tel. +49 221 67771830 Fax +49 221 9742947 Mail frank@frank-rahn.de © 2014 Frank Rahn, http://www.frank-rahn.de 2
  • 3. Inhalt | Aufgabenstellung Erstellung eines Integrationsservice für den Mule ESB ● Schnittstelle soll ein Webservice (SOAP) sein ● Zugriff auf das Mainframe COBOL CICS Programm PBK010 ● Einsatz des Open Source Tools LegStar for Mule ESB ● Generierung von Transformatoren, die die Daten vom Mainframe (EBCDIC, COMP, etc.) in Java Objekte schreiben ● Generieren von Adaptern, die das Mainframe Programm über den IBM CICS Web Support aufrufen © 2014 Frank Rahn, http://www.frank-rahn.de 3
  • 4. Informationen | Source Repository | WSDL ● Artikel auf meiner Homepage ● http://www.frank-rahn.de/cobol-cics-legstar-mule-esb.html ● Präsentation auf slideshare ● http://de.slideshare.net/frankrahn/cobol-cicsleg-starmuleesb ● Quellen des Beispiels ● https://github.com/frank-rahn/mule/tree/master/cobol-cics-legstar-mule-esb ● WSDL aus meinem XML-Namespace ● http://xmlns.frank-rahn.de/ws/bic/1.0/ © 2014 Frank Rahn, http://www.frank-rahn.de 4
  • 5. Installation Mule Studio & LegStar ● Installation Mule Studio (Basiert auf Eclipse v3.5) ● Kann unter folgender URL heruntergeladen werden ● https://www.mulesoft.com/platform/mule-studio ● Installation der LegStar Eclipse Plugins ● Starten des Mule Studios und folgenden Menüpunkt aufrufen ● Help → Install New Software... ● Den Button Add... betätigen und die folgende URL eingeben ● http://www.legsem.com/legstar/mule/eclipse/update ● Das Plugin LegStar Mule Component Generator installieren ● Optionale LegStar Eclipse Plugins finden Sie unter folgender URL ● http://www.legsem.com/legstar/eclipse/update © 2014 Frank Rahn, http://www.frank-rahn.de 5
  • 6. Installation LegStar modules for z/OS Es müssen die LegStar Mainframe Programme installiert werden ● Der IBM CICS Web Support muss verfügbar sein ● Herunterladen der LegStar distribution for z/OS unter folgender URL ● http://www.legsem.com/legstar/legstar-transport/legstar-distribution-zos/do wnload.html ● Installation der LegStar Mainframe Programme nach der Anleitung, die unter folgender URL zu finden ist ● http://www.legsem.com/legstar/legstar-transport/legstar-distribution-zos/insta ll-instructions.html © 2014 Frank Rahn, http://www.frank-rahn.de 6
  • 7. Funktionsweise von LegStar auf dem Mainframe ● Aus dem Mule ESB heraus wird per LegStar Outbound Endpoint über HTTP der IBM CICS Web Support aufgerufen ● Das IBM CICS ruft wiederum das LegStar Mainframe Programm LSWEBBIN (C/370 program) auf ● Danach ruft das LegStar Mainframe Programm über den LegStar CICS Link Driver LSLNKBIN (C/370 library) das eigentliche Mainframe Programm, hier PBK010 (COMMAREA-driven COBOL program), auf © 2014 Frank Rahn, http://www.frank-rahn.de 7
  • 8. Anlegen eines Projekts im Mule Studio ● Auswahl über das Menü ● File → New → Mule Project ● Eingabe des Projektnamens ● cobol-cics-legstar-mule-esb ● Betätigen des Button Finish © 2014 Frank Rahn, http://www.frank-rahn.de 8
  • 9. Anlegen des Inbound Endpoint ● Generieren der JAXB Klassen mit Maven ● src/main/etc/pom.xml ● Verschieben der JAXB Klassen nach ● src/main/java ● Anlegen des Mule Flows ● Name ● cobol-cics-legstar-mule-esbFlow ● Adresse für Inbound HTTP Endpoint ● http://localhost:8080/pbk010 ● Service Klasse für Inbound SOAP Service ● de.frank_rahn.xmlns.ws.bic._1_0.BicService © 2014 Frank Rahn, http://www.frank-rahn.de 9
  • 10. Parameter des Mainframes für dieses Beispiel ● CICS Transaktionsname BK01 ● Programmname PBK010 (COMMAREA-driven COBOL program) ● Copystrecke Eingabe CBK010I ● Copystrecke Ausgabe CBK010O ● Verwendeter Zeichensatz IBM01141 ● User TD00123 ● Passwort geheim ● URL des Mainframes http://mainframe.frank-rahn.de:4081 ● Pfad /CICS/BK01/LSWEBBIN © 2014 Frank Rahn, http://www.frank-rahn.de 10
  • 11. Generierung der LegStar Komponenten ● LegStar Structures mapping aus Input- und Output-Copystrecke generieren ➔ Erstellt jeweils ein XML-Schema mit den Informationen aus der jeweiligen Copystrecke ● LegStar Transformers aus den XML-Schemas generieren ➔ Erstellt JAXB Klassen mit spezifischen Annotationen für den Mainframe ➔ Generiert die Transformator-Klassen für die Erzeugung eines Byte Array als Übergabe an ein COBOL Programm ● LegStar Operations mapping definieren ● LegStar Mule Mainframe Adapter generieren ➔ Legt eine mule-config.xml mit einem Flow an, der die LegStar Komponenten enthält © 2014 Frank Rahn, http://www.frank-rahn.de 11
  • 12. LegStar Structures mapping der Eingabe generieren 1/3 ● Es wird die Copystrecke CBK010I.cpy benötigt ● <PROJECT>/src/main/cixs/CBK010I.cpy ● Starten des LegStar Wizard über eine der beiden Möglichkeiten ● Menü : LegStar → New structures mapping... ● Toolbar : © 2014 Frank Rahn, http://www.frank-rahn.de 12
  • 13. LegStar Structures mapping der Eingabe generieren 2/3 Namespace mit Version 1.0 © 2014 Frank Rahn, http://www.frank-rahn.de 13
  • 14. LegStar Structures mapping der Eingabe generieren 3/3 CBK010I.cpy auswählen © 2014 Frank Rahn, http://www.frank-rahn.de 14
  • 15. LegStar Transformers für die Eingabe generieren 1/2 ● Auf der Datei cbk010i.xsd das Context Menü öffnen und den Generator auswählen ● <PROJECT>/cbk010i.xsd © 2014 Frank Rahn, http://www.frank-rahn.de 15
  • 16. LegStar Transformers für die Eingabe generieren 2/2 Selektieren © 2014 Frank Rahn, http://www.frank-rahn.de 16
  • 17. LegStar Structures mapping der Ausgabe generieren 1/3 ● Es wird die Copystrecke CBK010O.cpy benötigt ● <PROJECT>/src/main/cixs/CBK010O.cpy ● Starten des LegStar Wizard über eine der beiden Möglichkeiten ● Menü : LegStar → New structures mapping... ● Toolbar : © 2014 Frank Rahn, http://www.frank-rahn.de 17
  • 18. LegStar Structures mapping der Ausgabe generieren 2/3 Namespace mit Version 1.0 © 2014 Frank Rahn, http://www.frank-rahn.de 18
  • 19. LegStar Structures mapping der Ausgabe generieren 3/3 CBK010O.cpy auswählen © 2014 Frank Rahn, http://www.frank-rahn.de 19
  • 20. LegStar Transformers für die Ausgabe generieren 1/2 ● Auf der Datei cbk010o.xsd das Context Menü öffnen und den Generator auswählen ● <PROJECT>/cbk010o.xsd © 2014 Frank Rahn, http://www.frank-rahn.de 20
  • 21. LegStar Transformers für die Ausgabe generieren 2/2 Selektieren © 2014 Frank Rahn, http://www.frank-rahn.de 21
  • 22. LegStar Operations mapping definieren 1/5 ● Starten des LegStar Wizard über eine der beiden Möglichkeiten ● Menü : LegStar → New operations mapping... ● Toolbar : © 2014 Frank Rahn, http://www.frank-rahn.de 22
  • 23. LegStar Operations mapping definieren 2/5 Namen in bk010 ändern © 2014 Frank Rahn, http://www.frank-rahn.de 23
  • 24. LegStar Operations mapping definieren 3/5 Betätigen © 2014 Frank Rahn, http://www.frank-rahn.de 24
  • 25. LegStar Operations mapping definieren 4/5 Betätigen Betätigen © 2014 Frank Rahn, http://www.frank-rahn.de 25
  • 26. LegStar Operations mapping definieren 5/5 1. Auswählen 2. Betätigen © 2014 Frank Rahn, http://www.frank-rahn.de 26
  • 27. LegStar Mule Mainframe Adapter generieren 1/6 Auswählen für Mule → Mainframe © 2014 Frank Rahn, http://www.frank-rahn.de 27
  • 28. LegStar Mule Mainframe Adapter generieren 2/6 Zeichensatz anpassen CICS Transaktion CWBA durch BK01 ersetzen © 2014 Frank Rahn, http://www.frank-rahn.de 28
  • 29. LegStar Mule Mainframe Adapter generieren 3/6 Der LegStar Wizzard hat einen Mule Flow src/app/mule-config.xml erzeugt. Aus diesem Mule Flow müssen die LegStar Komponenten (Inbound Endpoint, 4* Transformer, Outbound Endpoint) in den Mule Flow der Anwendung übernommen werden. © 2014 Frank Rahn, http://www.frank-rahn.de 29
  • 30. LegStar Mule Mainframe Adapter generieren 4/6 Die globalen LegStar Transformers <!-- Transform serialized java objects to mainframe data --> <legstar:java-to-host-transformer name="pbk010JavaToHost" ... class="de.rahn.legstar.cixs.bk010.DfhcommareaToHostMuleTransfor... <!-- Transform mainframe data to serialized java objects --> <legstar:host-to-java-transformer name="pbk010HostToJava" ... class="de.rahn.legstar.cixs.bk010.HostToDfhcommareaMuleTransfor... <!-- Wrap mainframe data in a LegStar request for mainframe progr... <legstar:host-to-legstar-transformer name="pbk010HostToLegStar" ... <legstar:host-program programName="PBK010" maxDataLength="1338" ... /> </legstar:host-to-legstar-transformer> <!-- Unwrap LegStar response to mainframe program execution --> <legstar:legstar-to-host-transformer name="pbk010LegStarToHost" /> © 2014 Frank Rahn, http://www.frank-rahn.de 30
  • 31. LegStar Mule Mainframe Adapter generieren 5/6 Der globale Outbound Endpoint <!-- Legstar Outbound Endpoint --> <legstar:endpoint name="mainframeRequestEndpoint" ... address="legstar://mainframe.frank-rahn.de:4081/CICS/BK01/LSWEBBIN" /> Der Outbound Endpoint im Flow <flow name="cobol-cics-legstar-mule-esbFlow" ... ... <outbound-endpoint ref="mainframeRequestEndpoint" ... transformer-refs="pbk010JavaToHost pbk010HostToLegStar" responseTransformer-refs="pbk010LegStarToHost pbk010HostToJava" /> ... </flow> © 2014 Frank Rahn, http://www.frank-rahn.de 31
  • 32. LegStar Mule Mainframe Adapter generieren 6/6 Authentifizierung hinzufügen Das LegStar Plugin erfasst zwar die Authentifizierung (User ID und Password), aber schreibt sie nicht in den Mule Flow. Daher muss dieses noch nachgeholt werden. <!-- Legstar Outbound Endpoint --> <legstar:endpoint name="mainframeRequestEndpoint" ... address="legstar://TD00123:geheim@mainframe.frank-rahn.de:4081/CI.. Alternativ kann der LegStar Endpoint auch durch einen HTTP Endpoint ersetzt werden. <http:outbound-endpoint host="mainframe.frank-rahn.de" port="4081" path="CICS/BK01/LSWEBBIN" exchange-pattern="request-response" ... mimeType="application/octet-stream" user="TD00123" password="geheim" transformer-refs="pbk010JavaToHost pbk010HostToLegStar" responseTransformer-refs="pbk010LegStarToHost pbk010HostToJava" /> Dadurch besteht auch die Möglichkeit SSL/TLS zu verwenden. © 2014 Frank Rahn, http://www.frank-rahn.de 32
  • 33. Transformer zwischen Webservice und LegStar Zum Abschluss müssen noch zwei Transformator-Klassen erstellt werden. Der Transformer Request → CBK010I wandelt das eingehende JAXB-Objekt (BicRequest) des Webservice in das entsprechende JAXB-Objekt (Dfhcommarea) von LegStar. Der Transformer CBK010O → Response wandelt das JAXB-Objekt (Dfhcommarea) von LegStar in das ausgehende JAXB-Objekt (BicResponse) des Webservices. © 2014 Frank Rahn, http://www.frank-rahn.de 33
  • 34. Vielen Dank für Ihre Aufmerksamkeit! Dipl.-Ing. Frank Rahn Neusser Straße 594 50737 Köln Tel. +49 221 67771830 Fax +49 221 9742947 Mail frank@frank-rahn.de © 2014 Frank Rahn, http://www.frank-rahn.de 34
  • 35. Lizenzen Dieses Werk ist unter der Creative-Commons-Lizenz vom Typ Namensnennung-Keine Bearbeitung 3.0 Deutschland lizenziert. Um eine Kopie dieser Lizenz einzusehen, besuchen Sie http://creativecommons.org/licenses/by-nd/3.0/de/ oder schreiben Sie einen Brief an Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. © 2014 Frank Rahn, http://www.frank-rahn.de 35