Utilización de las API de adaptadores locales optimizados de Liberty para invocar servicios en un espacio de direcciones externo

Utilice las API de los adaptadores locales optimizados de WebSphere (WOLA) para invocar servicios en un espacio de direcciones externo o en un subsistema desde un servidor de Liberty.

Antes de empezar

Conecte la aplicación a un espacio de direcciones externo o a un subsistema tal como se describe en Utilización de adaptadores locales optimizados para conectarse a una aplicación en un espacio de direcciones externo desde una aplicación Liberty.

Si desea pasar los datos de registro que genera el asistente Rational Application Developer CICS/IMS Java™ Data Binding, primero debe habilitar la conexión para que utilice los datos de registro generados. Para obtener más información, consulte Habilitación de datos de registro generados en conexiones de adaptadores locales optimizados de salida en Liberty

Procedimiento

  1. En la aplicación, cree una interacción del objeto Conexión que ha creado. En el ejemplo siguiente se crea la interacción int del objeto Conexión con:
    Interaction int = con.createInteraction();
  2. Cree una especificación de interacción creando un objeto InteractionSpecImpl y proporcionando el nombre de servicio, que es el nombre del métodos al que desea invocar en el espacio de direcciones externo o subsistema. El nombre de servicio debe ser el nombre que se establecido cuando invocó a las API Receive Request Any, Receive Request Specific o Host Service API o, si está utilizando una tarea del servidor CICS (Customer Information Control System), el nombre del programa CICS. En el ejemplo siguiente se proporciona el nombre de servicio MYSERVICE en el objeto isi InteractionSpecImpl:
    InteractionSpecImpl isi = new InteractionSpecImpl();
    isi.setServiceName("MYSERVICE");
  3. Ejecute la interacción con la especificación de interacción. En el ejemplo siguiente se ejecuta la interacción int con la especificación de interacción isi y no se envían datos:
    int.execute(isi, null);

Ejemplo

En el ejemplo siguiente se muestra cómo iniciar una interacción con datos de entrada y de salida como matriz de bytes (byte[]):
public byte[] driveInteraction(javax.resource.cci.ConnectionFactory cf,
javax.resource.cci.Connection con,byte[] inputDataBytes),throws javax.resource.ResourceException
	{
	// Crear una interacción mediante la conexión de adaptador local optimizado
		 javax.resource.cci.Interaction i = con.createInteraction();
	// InteractionSpec describe el servicio que se va a llamar
		 com.ibm.websphere.ola.InteractionSpecImpl isi = new com.ibm.websphere.ola.InteractionSpecImpl();
		 isi.setServiceName("MYSERVICE");
	// Los datos de entrada se especifican con IndexedRecord.  La primera
	// ranura del registro indexado contiene los bytes de los datos de entrada.
		 javax.resource.cci.RecordFactory rf = cf.getRecordFactory();
		 javax.resource.cci.IndexedRecord ir = rf.createIndexedRecord(null);
		 ir.add(inputDataBytes);
		 		 
	// La interacción devuelve otro IndexedRecord, cuya primera
	// ranura contiene los bytes de los datos de salida.
		 javax.resource.cci.Record or = i.execute(isi, ir);
		 byte[] outputDataBytes = null;
		 		 
		 if (or != null)
		 {
		 		 outputDataBytes = (byte[])((javax.resource.cci.IndexedRecord)or).get(0);
		 }
		 		 
	// Devolver los datos de salida al interlocutor 
			return outputDataBytes;
		 }

En el ejemplo siguiente se muestra cómo iniciar una interacción utilizando un objeto de registro del libro de copias generado de Rational Application Developer. .

 /**
  * Ejemplo de control de una interacción de adaptador local optimizado,mediante la clase de correlación de libro de copias de Rational 
  * Application Developer de entrada (inputRecord) y recibiendo
  * una correlación de libro de copias de Rational Application Developer de salida.
	*/		 
			public javax.resource.cci.Record driveInteraction(
		 	javax.resource.cci.Connection con,
		 	javax.resource.cci.Record inputRecord)
		 	throws javax.resource.ResourceException
	  {
	// Crear una interacción mediante la conexión OLA
		 	javax.resource.cci.Interaction i = con.createInteraction();
	// InteractionSpec describe el servicio que se va a llamar com.ibm.websphere.ola.InteractionSpecImpl isi = 
		 new com.ibm.websphere.ola.InteractionSpecImpl();
		 isi.setServiceName("MYSERVICE");
	// El libro de copias de Rational Application Developer generado implementa 
	// javax.resource.cci.Record y se puede pasar directamente a la interacción.
	// La interacción devuelve IndexedRecord, cuya primera ranura contiene 
  // los bytes de los datos de salida.
		 	javax.resource.cci.Record or = i.execute(isi, inputRecord);
		 	javax.resource.cci.Record outputRecord = null;
		 	if (or != null)
		 {
	// En este ejemplo, RADGeneratedOutputType es el nombre de la clase de correlación de libro de copias que Rational Application Developer
  // genera.
		 	outputRecord = new RADGeneratedOutputType();
 // Los tipos de salida se almacenan en el registro de salida que devuelve la
 // interacción, que es IndexedRecord.
		 byte[] outputDataBytes = 
     (byte[])((javax.resource.cci.IndexedRecord)or).get(0);
		 		 		 
 // Para convertir los bytes de salida en otro libro de copias generado por Rational Application Developer, 
 // llame al método setBytes(byte[]) de dicha clase.  La clase 
 // implementará la interfaz com.ibm.etools.marshall.RecordBytes.
		 ((com.ibm.etools.marshall.RecordBytes)outputRecord)
        .setBytes(outputDataBytes);
		 }
		 		 
// Devolver los datos de salida al interlocutor
		 		 return outputRecord;
		 }

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_dat_useoutboundconnection.html