La primera opción de migración del enlace de proceso de SOAP/JMS de
WebSphere
Studio Application Developer Integration Edition permite a un cliente de servicios Web acceder al servicio.
La exportación con enlace de servicio Web hace que un cliente de servicios Web
externo pueda acceder a un componente SCA. Para crear una exportación con enlace de servicio
Web:
- Abra el editor de ensamblajes para el módulo creado por el asistente de
migración.
- Cree una Exportación con enlace SCA para cada interfaz de servicio para la
que se haya generado un enlace de servicio Web de
IBM
(SOAP/JMS) en
WebSphere
Studio Application Developer Integration Edition:
- Pulse con el botón derecho en el componente SCA del editor de
ensamblajes.
- Seleccione
Exportar….
- Seleccione Enlace de
servicio Web.
- Si hay varias interfaces para el componente, seleccione la que le permita
exportar con este tipo de enlace.
- Seleccione el transporte
soap/jms.
- Una vez creada la exportación de servicios Web, seleccione la exportación en
el editor de ensamblajes y en la vista de propiedades seleccione el panel de contenido
Descripción. Se muestran el nombre y la descripción de la exportación,
que pueden modificarse según convenga.
- Guarde el diagrama de ensamblaje.
- Seleccione el panel de contenido de enlace y verá que se ha generado
directamente en la carpeta de proyecto del módulo un enlace y un servicio WSDL de servicio Web de
IBM. Se
denominará componente exportado Export nombre de tipo de puerto WSDL
Jms_Service.wsdl. Si examina ese archivo encontrará que se utiliza de manera predeterminada el
enlace con envoltura de documento/literal, ya que es el estilo preferido en 6.0. Es el WSDL que los clientes de
servicios Web de
IBM
utilizarán para invocar el servicio.
- Siga estos pasos para generar un enlace de servicio Web y un servicio nuevos
si desea preservar el código del cliente:
- Copie el archivo WSDL 5.1 del proyecto EJB generado en 5.1 situado en
ejbModule/META-INF/wsdl/nombre de proceso de
negocio/nombre de tipo de puerto de interfaz de proceso de
negocioJMS.wsdl en el proyecto de módulo de integración de negocio.
- Después de copiar sobre el archivo y de volver a construir el módulo, puede
ver mensajes de error ya que los tipos de esquema XML, los mensajes WSDL y los tipos de puerto WSDL utilizados por el
servicio Web están duplicados en el archivo WSDL del servicio Web de
IBM
en 5.1. Para arreglar esto, suprima las definiciones duplicadas del enlace de servicio Web de
IBM/WSDL
de servicio y en su lugar añada una importación WSDL para el WSDL de interfaz real.
Nota: es importante tener en cuenta que cuando
WebSphere
Studio Application Developer Integration Edition generó el código de despliegue de servicio Web de
IBM
modificó las definiciones de esquema en algunos casos. Esto puede originar incoherencias para los clientes existentes
que utilizan el WSDL de servicio Web de
IBM.
Por ejemplo, el atributo del esquema "elementFormDefault" se estableció en "qualified" en el
esquema en línea generado en el WSDL de servicio Web de
IBM
incluso aunque la definición de esquema original no estuviera calificada. Esto generaría el error siguiente en tiempo
de ejecución: WSWS3047E: Error: no se puede deserializar el
elemento.
- Pulse con el botón derecho sobre el archivo WSDL que acaba de copiar en el
módulo de integración de negocio, seleccione Abrir
con y después Editor
WSDL.
- Vaya a la pestaña Origen. Suprima todos los mensajes y tipos de puerto WSDL
definidos en este archivo.
- Ahora verá el error: El
tipo de puerto '<tipo_de_puerto>' especificado para el
enlace '<enlace>' no está definido. Para
arreglar esto, en el Editor WSDL de la pestaña Gráfico, pulse con el botón derecho en la sección Importaciones y
seleccione Añadir
importación.
- En la vista de propiedades de la pestaña General, pulse el botón
… situado a la
derecha del campo Ubicación. Busque la interfaz WSDL en la que están ubicados el mensaje WSDL y las definiciones de
tipo de puerto y pulse Aceptar para
importar el WSDL de interfaz en el WSDL de servicio/enlace.
- Guarde el archivo WSDL.
- Renueve/reconstruya el proyecto. Pase a la perspectiva Integración empresarial.
Abra el Diagrama de ensamblaje en el Editor de ensamblaje.
- En la vista del explorador de proyectos, expanda el módulo que está migrando
y expanda la categoría lógica Puertos de servicio
Web. Debe ver el puerto que
existe en el WSDL de enlace/servicio listado. Arrástrelo y suéltelo en el Editor de ensamblaje.
- Elija crear una
Exportación con enlace de servicio Web y
seleccione el nombre de puerto adecuado. Esto creará la Exportación que utiliza el enlace/servicio
antiguo de forma que los clientes de servicios Web existentes no tienen que cambiar. Si selecciona la exportación que
acaba de crear en el Editor de ensamblaje y va a la vista propiedades, en la pestaña Enlace debe ver que los nombres de
servicio y el puerto 5.1 están cumplimentados.
- Guarde todos los cambios.
- Justo después de desplegar la aplicación puede cambiar la configuración del
proyecto Web generado para que coincida con la dirección de servicio 5.1 (deberá hacer estos cambios cada vez que haga
cambios en el módulo SCA que impliquen la regeneración de este archivo.) Si mira en la definición de
servicio WSDL de servicio Web de
IBM
que está reutilizando de 5.1 verá la dirección de servicio a la que el cliente 5.1 está
codificado:<wsdlsoap:address
location="http://localhost:9080/MyServiceWeb/services/MyServicePort"/>
- Para que los artefactos de proyecto Web generados en 6.0 coincidan con esta
dirección de servicio antigua, debe modificar el descriptor de despliegue del proyecto Web generado. Abra el
descriptor de despliegue en
WebSphere
Integration Developer y, en la pestaña Servlets, añada una Correlación URL adicional que sea muy parecida a la
correlación URL existente para esa exportación, con el mismo nombre de servlet pero con un patrón de URL
distinto.
- Además, si necesita modificar la raíz de contexto de este proyecto Web para
que coincida con la raíz de contexto en la dirección de servicio original (en este ejemplo la raíz de contexto es
"MyServiceWeb"), puede abrir el descriptor de despliegue para la Aplicación de empresa J2EE Enterprise en la
que está este proyecto Web y cambiar la raíz de contexto de ese módulo Web para que coincida con la raíz de contexto de
la antigua dirección de servicio. Puede aparecer el error siguiente que puede pasar por alto:
CHKJ3017E: el proyecto Web <NOM PROY WEB> está correlacionado
con una raíz de contexto no válida <RAÍZ CONTEXTO NUEVO> en el proyecto EAR <NOMBRE
APL>.