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
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
Ejemplo
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;
}