APIs für optimierte lokale Adapter in Liberty für den Aufruf von Services in einem externen Adressraum verwenden
Verwenden Sie die WOLA-APIs (WebSphere Optimized Local Adapters, optimierte lokale WebSphere-Adapter), um über einen Liberty-Server Services in einem externen Adressraum oder Subsystem aufzurufen.
Vorbereitende Schritte
Wenn Sie Datensatzdaten, die vom Assistenten für CICS/IMS-Java™-Datenbindungen für Rational Application Developer generiert werden, übergeben möchten, müssen Sie zuerst die Verbindung für die Verwendung der generierten Datensatzdaten aktivieren. Weitere Informationen enthält der Abschnitt Generierte Datensatzdaten in abgehenden OLA-Verbindungen in Liberty aktivieren.
Vorgehensweise
Beispiel
public byte[] driveInteraction(javax.resource.cci.ConnectionFactory cf,
javax.resource.cci.Connection con,byte[] inputDataBytes),throws javax.resource.ResourceException
{
// Interaktion mit der OLA-Verbindung (optimierte lokale Adapter) erstellen
javax.resource.cci.Interaction i = con.createInteraction();
// InteractionSpec beschreibt den aufzurufenden Service
com.ibm.websphere.ola.InteractionSpecImpl isi = new com.ibm.websphere.ola.InteractionSpecImpl();
isi.setServiceName("MYSERVICE");
// Die Eingabedaten werden mit einem IndexedRecord angegeben. Das erste
// Segment im indexierten Datensatz enthält die Eingabedatenbytes.
javax.resource.cci.RecordFactory rf = cf.getRecordFactory();
javax.resource.cci.IndexedRecord ir = rf.createIndexedRecord(null);
ir.add(inputDataBytes);
// Die Interaktion gibt einen weiteren IndexedRecord zurück, dessen erstes
// Segment die Ausgabedatenbytes enthält.
javax.resource.cci.Record or = i.execute(isi, ir);
byte[] outputDataBytes = null;
if (or != null)
{
outputDataBytes = (byte[])((javax.resource.cci.IndexedRecord)or).get(0);
}
// Ausgabedaten an den Aufrufenden zurückgeben
return outputDataBytes;
}
Im folgenden Beispiel wird gezeigt, wie eine Interaktion mit einem von Rational Application Developer generierten Copybook-Record-Objekt gestartet wird.
/**
* Ein Beispiel für das Starten einer OLA-Interaktin mit einer Copybook-Zuordnungsklasse
* von Rational Application Developer als Eingabe und den Empfang einer Copybook-Zuordnung
* von Rational Application Developer als Ausgabe.
*/
public javax.resource.cci.Record driveInteraction(
javax.resource.cci.Connection con,
javax.resource.cci.Record inputRecord)
throws javax.resource.ResourceException
{
// Interaktion mit einer OLA-Verbindung erstellen
javax.resource.cci.Interaction i = con.createInteraction();
// InteractionSpec beschreibt den aufzurufenden Service
com.ibm.websphere.ola.InteractionSpecImpl isi =
new com.ibm.websphere.ola.InteractionSpecImpl();
isi.setServiceName("MYSERVICE");
// Das von Rational Application Developer generierte Copybook implementiert
// javax.resource.cci.Record and und kann direkt an die Interaktion übergeben werden.
// Die Interaktion gibt einen IndexedRecord zurück, dessen erstes Segment die Ausgabedatenbytes
// enthält.
javax.resource.cci.Record or = i.execute(isi, inputRecord);
javax.resource.cci.Record outputRecord = null;
if (or != null)
{
// In diesem Beispiel ist RADGeneratedOutputType der Name der von Rational Application Developer
// generierten Copybook-Zuordnungsklasse.
outputRecord = new RADGeneratedOutputType();
// Die Ausgabebytes werden in dem Ausgabedatensatz gespeichert, der in der
// Interaktion zurückgegeben wird (IndexedRecord).
byte[] outputDataBytes =
(byte[])((javax.resource.cci.IndexedRecord)or).get(0);
// Zum Konvertieren der Ausgabebytes in ein anderes von Rational Application Developer generiertes Copybook
// rufen Sie die Methode setBytes(byte[]) dieser Klasse auf. Die Klasse
// implementiert die Schnittstelle com.ibm.etools.marshall.RecordBytes.
((com.ibm.etools.marshall.RecordBytes)outputRecord)
.setBytes(outputDataBytes);
}
// Ausgabedaten an den Aufrufenden zurückgeben
return outputRecord;
}