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

Verbinden Sie die Anwendung gemäß der Beschreibung im Abschnitt Optimierte lokale Adapter für die Herstellung einer Verbindung zu einer Anwendung in einem externen Adressraum über eine Liberty-Anwendung verwenden mit einem externen Adressraum oder Subsystem.

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

  1. Erstellen Sie in der Anwendung eine Interaktion aus dem erstellten Connection-Objekt. Im folgenden Beispiel wird die Interaktion int aus dem Connection-Objekt con erstellt:
    Interaction int = con.createInteraction();
  2. Erstellen Sie eine Interaktionsspezifikation, indem Sie ein InteractionSpecImpl-Objekt erstellen und den Servicenamen angeben. Der Servicename ist der Name der Methode, die Sie im externen Adressraum oder Subsystem aufrufen möchten. Der Servicename muss der Name sein, den Sie beim Aufruf der API "Receive Request Any", "Receive Request Specific" oder "Host Service" angegeben haben, bzw. der Name des CICS-Programms, wenn Sie eine CICS-Server-Task (Customer Information Control System) verwenden. Das folgende Beispiel stellt den Servicenamen MYSERVICE im InteractionSpecImpl-Objekt isi bereit:
    InteractionSpecImpl isi = new InteractionSpecImpl();
    isi.setServiceName("MYSERVICE");
  3. Führen Sie die Interaktion mit der Interaktionsspezifikation aus. Im folgenden Beispiel wird die Interaktion int mit der Interaktionsspezifikation isi ausgeführt, und es werden keine Daten gesendet:
    int.execute(isi, null);

Beispiel

Im folgenden Beispiel wird gezeigt, wie eine Interaktion mit Eingabe- und Ausgabedaten als Byte-Array (byte[]) gestartet wird:
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;
		 }

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_dat_useoutboundconnection.html