lunes, octubre 13, 2008

Publicar un Web Service

ACTUALIZACIÓN (2009/03/11) - Este artículo pretende describir los pasos necesarios para generar el archivo WSDL correspondiente al Web Service creado sin llegar a tocar la publicación del mismo en los directorios UDDI. Mediante el fichero WSDL, el sistema externo podrá conocer la estructura de los datos del servicio y la dirección de conexión del mismo, por lo que bastará con hacerles llegar dicho fichero para que se puedan conectar al servicio deseado. Si se desea conocer más acerca de la publicación del fichero en directorios UDDI se puede consultar los enlaces de referencia que se encuentran al final del artículo.

Una vez definido y configurado correctamente la interfaz de tipo Web Service queda publicar el servicio correspondiente.  En el Integration Builder existe un asistente que permite generar el documento WSDL necesario para que los servicios externos se puedan comunicar con el Web Service. Esta herramienta se puede encontrar en el menú Tools -> Define Web Service...


Lo primero por lo que te pregunta el asistente es por la URL del canal de entrada del servidor SOAP de integración (Integration Server SOAP inbound channel). Bastará pulsar el botón de proponer URL (Propouse URL) para que el asistente nos facilite una URL válida del tipo http://<servidorXI>:<http_port>/sap/xi/engine?type=entry. No se recomienda el uso de esta URL ya que, aunque es válida para conectar con el servicio, no hace uso de la capa SOAP y, por lo tanto, no es segura.  Para hacer uso de la capa SOAP, la URL debe ser del tipo  http://<host>:<java_port>/XISOAPAdapter/MessageServlet?channel=<party>:<service>:<channel> o, en el caso de no existir PARTY: http://<host>:<java_port>/XISOAPAdapter/MessageServlet?channel=:<service>:<channel> (manteniendo los ':' previos al servicio).

Ejemplo: http://ServidorXI:50000/XISOAPAdapter/MessageServlet?channel=:Service_BS:Sender_WS_CC

Para comprobar que la dirección es válida se podrá probar la URL en el navegador de Internet y, tras identificarse con un usuario con los permisos adecuados, devolverá una página con el siguiente contenido:

Message Servlet is in Status OK


Status information:

Servlet com.sap.aii.af.mp.soap.web.MessageServlet (Version $Id: //tc/xi/NW04S_12_REL/src/_adapters/_soap/java/com/sap/aii/af/mp/soap/web/MessageServlet.java#4 $) bound to /MessageServlet
Classname ModuleProcessor: null
Lookupname for localModuleProcessorLookupName: localejbs/ModuleProcessorBean
Lookupname for remoteModuleProcessorLookupName: null
ModuleProcessorClass not instantiated
ModuleProcessorLocal is Instance of com.sap.aii.af.mp.processor.ModuleProcessorLocalLocalObjectImpl0_0
ModuleProcessorRemote not instantiated

En segundo lugar se nos pedirá que indiquemos la interfaz de mensaje del Repositorio de Integración que deseamos publicar. Hay que tener en cuenta que si el que inicia el servicio es el sistema externo, la interfaz será de salida (outbound). Para seleccionarla utilizaremos el botón de ayuda que aparece junto a los campos.


El tercer paso consiste en indicar el sistema que inicia el servicio, en el campo Service se indicará el nombre lógico de la máquina (sistema o servicio de negocios), en el campo Interface Name indicaremos el nombre de la interfaz de mensajes que se especificó en el paso anterior y el espacio de nombres será el correspondiente a dicha interfaz.


Una vez introducidos los campos necesarios, pulsaremos Finish y se generará el archivo WSDL que  permitirá a los sistemas externos comunicarse con el Web Service de nuestro sistema. Para ello pulsaremos el botón SAVE y lo guardaremos en algún directorio local de nuestro equipo. Hay que tener en cuenta que el servicio web está en funcionamiento desde el momento en el que se activan los canales de comunicación, por lo que la generación del WSDL no guarda relación con la activación del mismo.

A continuación podremos incluir el servicio web en la Biblioteca BSP a través de la transacción SE80, pero esto no es necesario para el funcionamiento del mismo. En ella deberemos seleccionar el paquete donde deseemos vincular el servicio y con el botón derecho sobre el mismo seleccionaremos la opción Crear -> Biblioteca BSP. Seguidamente pulsaremos de nuevo con el botón derecho sobre la Biblioteca BSP recién creada y seleccionaremos la opción Crear -> Aplicación BSP y, por último, sobre la propia aplicación pulsaremos una vez más con el botón derecho del ratón y crearemos una aplicación.

Cada aplicación puede contener más de un Web Service definido. Para crear un WS a partir del fichero WSDL que acabamos de generar pulsaremos con el botón derecho del ratón sobre la aplicación creada y seleccionaremos la opción Crear -> Objeto MIME -> Importar y seleccionaremos el archivo WSDL que hemos creado. No hay que olvidar activar la aplicación BSP tras generar el objeto MIME para que funcione correctamente. En este caso, cada vez que se modifique la "estructura" de los componentes implicados en la interfaz será necesario generar de nuevo el fichero WSDL y actualizarlo en la aplicación de la biblioteca BSP correspondiente (activando la aplicación después de su importación).

Referencias:

    UDDI:

      1 comentario:

      Probar un Web Service « Tykall’s Weblog dijo...

      [...] un Web Service Una vez publicado un Web Service (mirar esta entrada para más información), falta poder probarlo. Existen dos modos de probar el [...]