Este tema muestra cómo migrar clientes que utilizan una interfaz
genérica EJB
para invocar un servicio.
- Arrastre la exportación con enlace de SCA del módulo migrado y suéltela en el
editor de ensamblajes de este nuevo módulo. Se creará una importación con enlace de SCA.
Para
que un cliente pueda obtener una referencia a esta importación, debe crearse una referencia
autónoma.
- En la paleta, seleccione el elemento Referencias autónomas. Pulse una vez sobre el lienzo del editor de ensamblajes a fin de crear una nueva
referencia autónoma para este nuevo módulo.
- Seleccione la herramienta de conexión y pulse sobre la referencia de servicio; a
continuación, pulse Importar.
- Pulse Aceptar cuando se le muestre una alerta que le indica que se
creará una referencia coincidente en el nodo de origen.
- Se le preguntará: Es más sencillo para un cliente
Java utilizar una interfaz
Java con esta referencia. ¿Desea convertir la referencia WSDL en una referencia
Java compatible?
- Responda
Sí si desea que el cliente busque este
servicio y lo convierta temporalmente en una clase
Java
para invocarlo utilizando una interfaz
Java.
Esta nueva interfaz Java toma el nombre
del tipo de puerto WSDL, en que el paquete de la interfaz se deriva del espacio de nombres
del tipo de puerto WSDL. Hay un método definido para cada operación definida en el tipo de
puerto WSDL, y cada componente de mensaje WSDL se representa como un argumento para los
métodos de interfaz.
- Responda No si desea que el cliente busque este servicio y utilice la
interfaz com.ibm.websphere.sca.Service genérica para invocarlo utilizando la operación de
invocación como un servicio SCA genérico.
- Si lo desea, cambie el nombre de la referencia autónoma por otro más significativo
seleccionando el componente Referencias autónomas en el editor de ensamblajes. Vaya a la vista
Propiedades, acceda a la pestaña Detalles, desplácese por la información detallada, seleccione
la referencia que acaba de crear y modifique el nombre. Recuerde el nombre elegido para
esta referencia, porque el cliente necesitará utilizar este nombre al invocar el método
locateService de la instancia com.ibm.websphere.sca.ServiceManager.
- Pulse Guardar para guardar el diagrama de ensamblaje.
El cliente debe tener este nuevo módulo en la vía de acceso de clases local para poder
acceder al módulo EJB migrado en ejecución en el servidor.
A continuación se
muestra el aspecto del código de cliente para un servicio de tipo "CustomerInfo":
// Crear un ServiceManager nuevo
ServiceManager serviceManager = ServiceManager.INSTANCE;
// Localizar el servicio CustomerInfo
CustomerInfo customerInfoService = (CustomerInfo) serviceManager.locateService ("<name-of-standalone-reference-from-previous-step");
// Invocar el servicio CustomerInfo
System.out.println(" [getMyValue] getting customer info...");
DataObject customer = customerInfoService.getCustomerInfo(customerID);
El cliente debe cambiar la construcción del mensaje.
Los mensajes se basaban en la clase WSIFMessage,
pero ahora deben basarse en la clase commonj.sdo.DataObject.