La técnica de migración recomendada consiste en utilizar el tipo de componente
Java
WebSphere
Integration Developer que permite representar el servicio
Java
como un componente SCA. Durante la migración, debe escribir código
Java
personalizado para convertir entre el estilo de interfaz
Java
SCA y el estilo de interfaz del componente
Java
existente.
Para crear el componente
Java
personalizado:
- En el proyecto del módulo, expanda
Interfaces y seleccione la interfaz WSDL
generada para esta clase
Java
en
WebSphere
Studio Application Developer Integration.
- Arrastre y suelte esta interfaz en el Editor de ensamblaje. Aparecerá un diálogo en el que se
le pedirá que seleccione el tipo de componente a crear. Seleccione Componente sin tipo
de implementación y pulse Aceptar.
- Aparecerá un componente en el diagrama de ensamblaje. Selecciónelo y vaya a la vista
Propiedades.
- En la pestaña Descripción puede cambiar el nombre y el nombre de
visualización del componente por algo más descriptivo.
- En la pestaña Detalles verá que este componente tiene una interfaz, la
interfaz que arrastró y soltó en el Editor de ensamblaje.
- Asegúrese de
que la clase
Java
a la que está intentando acceder está en la vía de acceso de clases del proyecto de servicio si no está contenida en el
mismo proyecto de servicio.
- Pulse con el botón derecho sobre el proyecto del módulo y seleccione Abrir editor de
dependencias…. Bajo la sección
Java, asegúrese de que aparece el proyecto
que contiene la clase
Java
antigua. Si no es así, añádala pulsando el botón Añadir….
- En el editor de
ensamblaje, pulse con el botón derecho el componente que acaba de crear y seleccione
A continuación seleccione el paquete en el que se generará la implementación
Java.
Esto crea un servicio
Java
de esqueleto que se adhiere a la interfaz WSDL de acuerdo con el modelo de programación SCA, en el que los tipos
complejos estás representados por un objeto que es un commonj.sdo.DataObject y los tipos simples están representados
por los equivalentes de objeto
Java.
Los ejemplos de código siguientes muestran:
- Definiciones relevantes de la interfaz WSDL 5.1
- Los métodos
Java
de
WebSphere
Studio Application Developer Integration Edition 5.1 correspondientes al WSDL
- Los métodos
Java
de
WebSphere
Integration Developer 6.0 para el mismo WSDL
El código siguiente muestra las definiciones relevantes de la interfaz WSDL de 5.1:
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified"
elementFormDefault="unqualified"
targetNamespace="http://migr.practice.ibm.com/"
xmlns:xsd1="http://migr.practice.ibm.com/">
<complexType name="StockInfo">
<all>
<element name="index" type="int"/>
<element name="price" type="double"/>
<element name="symbol" nillable="true"
type="string"/>
</all>
</complexType>
</schema>
</types>
<message name="getStockInfoRequest">
<part name="symbol" type="xsd:string"/>
</message>
<message name="getStockInfoResponse">
<part name="result" type="xsd1:StockInfo"/>
</message>
<operation name="getStockInfo" parameterOrder="symbol">
<input message="tns:getStockInfoRequest"
name="getStockInfoRequest"/>
<output message="tns:getStockInfoResponse"
name="getStockInfoResponse"/>
</operation>
El código siguiente muestra los métodos
Java
de
WebSphere
Studio Application Developer Integration Edition 5.1 correspondientes al WSDL:
public StockInfo getStockInfo(String symbol)
{
return new StockInfo();
}
public void setStockPrice(String symbol, float newPrice)
{
// establecer cosas
}
El código siguiente muestra los métodos
Java
de
WebSphere
Integration Developer 6.0 para el mismo WSDL:
public DataObject getStockInfo(String aString) {
//TODO Hay que implementar.
return null;
}
public void setStockPrice(String symbol, Float newPrice) {
//TODO Hay que implementar.
}
Ahora necesitará cumplimentar el código en el que verá los códigos “//TODO” en la clase de implementación
Java
generada. Hay dos opciones:
- Mueva la lógica de la
clase
Java
original a esta clase, adaptándola para utilizar DataObjects
- Esta es la opción recomendada si ha elegido el procedimiento de arriba abajo en
WebSphere
Studio Application Developer Integration Edition y desea que el componente
Java
trabaje con parámetros de DataObject. Esto es necesario porque las clases
Java
generadas a partir de definiciones WSDL en
WebSphere
Studio Application Developer Integration Edition tienen dependencias WSIF que deben eliminarse.
- Cree
una instancia privada de la antigua clase
Java
dentro de esta clase
Java
generada y escriba código para:
- Convertir todos los
parámetros de la clase de implementación
Java
generada en parámetros esperados por la clase
Java
antigua
- Invocar la instancia privada de la clase Java antigua con los parámetros convertidos
- Convertir el valor de retorno de la clase
Java
antigua en el tipo de valor de retorno declarado por el método de implementación
Java
generado
- Esta opción se recomienda para los casos de consumo en los que
los componentes
Java
de estilo 6.0 nuevos deben consumir proxys de servicio WSIF.
Una vez completada una de las opciones anteriores, debe volver a conectar el servicio
Java. No debería haber referencias, por lo tanto, necesita volver a conectar la
interfaz del componente
Java:
- Si un proceso de negocio invoca este servicio en el mismo módulo, se crea una conexión desde la referencia de proceso
de negocio adecuada a esta interfaz del componente
Java.
- Si un proceso de negocio invoca este servicio en otro módulo, cree una Exportación
con enlace SCA y desde el otro módulo, arrastre y suelte esta exportación en el Editor
de ensamblaje de ese módulo para crear la Importación con enlace SCA
correspondiente. Conecte la referencia de proceso de negocio adecuada a esa Importación.
- Si este servicio se publicó en
WebSphere
Studio Application Developer Integration Edition para exponerlo externamente, consulte la sección "Crear
exportaciones SCA para acceder al servicio migrado" para obtener instrucciones acerca de cómo volver a publicar el
servicio.