Mainframe-Zugriff via Java
In dieser Präsentation habe ich einen Integrationsservice für den Mule ESB beschrieben. Dieser Webservice (SOAP) baut ein Brücke zum Mainframe. Dazu verwende ich das Open Source Tool LegStar for Mule ESB, welches die Transformation der Daten für den Mainframe (EBCDIC) und den Aufruf des Mainframe COBOL CICS Programms übernimmt.
Download des Vortrags COBOL-CICS-LegStar-Mule-ESB (1054 KB)
Es kann etwas dauern bis die erste Folie angezeigt wird – die Präsentation muss erst geladen werden.
Die Navigation der Präsentation befindet sich unten rechts.
Der Quellcode und Download des Beispiels
Quellcode ansehen bei GitHub:
COBOL-CICS-LegStar-Mule-ESB
Download einer ZIP-Datei von GitHub:
COBOL-CICS-LegStar-Mule-ESB
Die Tipps
Transaktionen mit mehreren Copystrecken
Bei COMMAREA-basierten Mainframe Programmen, die mit mehreren Copystrecken aufgerufen werden (Hüllentransaktion), müssen die Copystrecken in der richtigen Reihenfolge in eine Copystrecke zusammen kopiert werden.
Achtung
Dabei darf allerdings nur eine 01 Strecke vorhanden sein.
Die XSD-Schemas werden dann aus der zusammengesetzten Copystrecke generiert.
REPLACING
In COBOL können mit dem REPLACING
Ausdruck einzelne Felder in der vordefinierten Copystrecke ersetzt werden (Pseudotextersetzung). Die Platzhalter :OWNER:
müssen vor der Verarbeitung mit LegStar ersetzt werden, um ein brauchbares XSD-Schema zu erhalten.
01 :OWNER:-RECORD. 02 :OWNER:-NAME PIC X(40). 02 :OWNER:-AGE PIC 9(3). 02 :OWNER:-ADDR PIC X(100). 02 :OWNER:-ONLY PIC X VALUE "Y".
REDEFINES
Falls in der Copystrecke REDEFINES
definiert werden, sollten die nicht benötigten Alternativen entfernt werden. In dem XSD-Schemas werden die REDEFINES
mit dem Element <xs:choice />
dargestellt. Dadurch werden die Strukturen der JAXB Klassen undurchsichtig und unnötig verkompliziert — insbesondere schlägt die Transformation fehl, wenn mehrere Alternativen gleichzeitig verwendet werden.
01 DFHCOMMAREA. 05 DATEN. 07 PERSON. 10 ZUSTG PIC X(04). 10 ZUSTG-R REDEFINES ZUSTG. 15 ZUSTG1 PIC X. 15 ZUSTG2 PIC X. 15 ZUSTG3 PIC X. 15 ZUSTG4 PIC X.
Mule und Maven
Wird die Mule-Application mit Apache Maven gebaut, so sind die Bibliotheken von LegStar und die abhängigen Bibliotheken nicht im Deployment-Artifact der Mule-Application enthalten. Standardmäßig werden vom Maven-Mule-Plugin die Bibliotheken mit der Group-Id org.mule.transports
nicht dem Deployment-Artifact hinzugefügt.
Nun gibt es zwei Möglichkeiten:
- Die LegStar Bibliotheken der Installation hinzufügen
Dazu muss die LegStar-Distribution (legstar-mule-transport-3.4.0-dist.jar
) in das Verzeichnis${MULE_HOME}/lib/user
kopiert werden. - Konfiguration des Maven-Mule-Plugins
Mit folgender Konfiguration des Maven-Mule-Plugins fügt das Plugin die benötigten Bibliotheken dem Deployment-Artifact hinzu.
<build> <plugins> <plugin> <groupId>org.mule.tools</groupId> <artifactId>maven-mule-plugin</artifactId> <configuration> <!-- Alterntiv können die LegStar-Komponenten im Mule Server installiert werden. So werden diese Bibliotheken und die abhängigen Bibliotheken in der Mule-Anwendung platziert. --> <inclusions> <inclusion> <groupId>org.mule.transports</groupId> <artifactId>legstar-mule-transport</artifactId> </inclusion> </inclusions> </configuration> </plugin> </plugins> </build>
Fehler in Eclipse Keine Generatoren gefunden
Wird das Build-Werkzeug Apache Maven für das Erzeugen von Eclipse-Projekten verwendet, kann es beim Generieren der LegStar Mule Mainframe Adapter zu folgendem Fehler kommen.
Hier wurde durch Apache Maven die Datei .classpath
überschrieben und die folgenden Einträge entfernt:
<classpathentry kind="con" path="com.legstar.eclipse.mule.LIBRARY"/> <classpathentry kind="con" path="com.legstar.eclipse.LIBRARY"/>
Dadurch findet das Plugin von LegStar die benötigten Java Bibliotheken nicht mehr.
Dieser Eintrag kann automatisch wieder rekonstruieren werden, wenn auf der Datei cobol-cics-legstar-mule-esb/src/main/cixs/bk010.cixs
das Context Menü geöffnet wird und über den Menüpunkt Legstar -> Generate Mule Mainframe Adapter...
der gewünschte Generator ausgewählt wird.
Eine weitere Möglichkeit ist, die Einträge durch Maven schreiben zulassen. Dazu muss in der pom.xml
folgende Einträge hinzugefügt werden.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <configuration> <classpathContainers> <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer> <classpathContainer>com.legstar.eclipse.mule.LIBRARY</classpathContainer> <classpathContainer>com.legstar.eclipse.LIBRARY</classpathContainer> </classpathContainers> </configuration> </plugin> </plugins> </build>
- Wer ist der optimale Java Bean Mapper? - Freitag, 22. September 2023
- Spring Boot Webanwendung: Die ersten Schritte (Tutorial) - Montag, 28. März 2016
- Mainframe-Zugriff via Java - Sonntag, 04. Mai 2014
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!