- A través del adaptador AXIS (requiere instalación previa y configuración)
- Mediante un mapeo XSLT
Mostrando entradas con la etiqueta Web Services. Mostrar todas las entradas
Mostrando entradas con la etiqueta Web Services. Mostrar todas las entradas
jueves, enero 13, 2011
Incluir UsernameToken en cabecera SOAP
Algunos servicios web requieren autenticación mediante Web Service Security en la que se pasen parámetros como usuario y contraseña a través de la cabecera SOAP del mensaje. En principio, esta opción NO está recogida en el adaptador SOAP de XI, pero existen dos alternativas que nos permitirán informar dichos parámetros:
Etiquetas:
SOAP,
UsernameToken,
Web Services,
XI
martes, marzo 24, 2009
Comprobar conexión servidor hacia fuera
A la hora de consumir un web service externo es necesario saber si la conexión hacia el exterior está configurara correctamente (puertos del firewall, etc.). Una manera sencilla de realizar dicha comprobación es a través de la creación de una conexión HTTP con servidor externo (tipo G) en la transacción SM59 y en la que incluiremos la dirección del servidor al que se desea acceder. Para comprobar si hay conexión bastará pulsar el botón "Test de conexión".

Una mala configuración puede provocar que se reciban timeouts a la hora de invocar el web service o que se produzcan fallos a la hora de crear el socket de comunicación...

Una mala configuración puede provocar que se reciban timeouts a la hora de invocar el web service o que se produzcan fallos a la hora de crear el socket de comunicación...
Etiquetas:
http,
socket,
timeout,
Web Services,
XI
lunes, octubre 13, 2008
Probar un Web Service
Una vez publicado un Web Service (mirar esta entrada para más información), falta poder probarlo. Existen varios modos de probar el funcionamiento de los Web Services.
Uno de ellos es mediante el uso de herramientas externas específicas como lo son:
Otro modo sería a través de la herramienta SAP Web Services Navigator (for Web services created/deployed on SAP Web AS) que proporciona XI para probar sus servicios web. Esta herramienta es el Navegador de Web Services y se puede acceder a ella desde la URL http://<servidor>:<puerto_java>/wsnavigator/enterwsdl.html. En ella deberemos introducir la dirección URL del WSDL publicado en la máquina. Para conocer dónde están publicados los servicios dentro de XI deberemos ejecutar la transacción SICF y navegar por el árbol base hasta encontrar el nombre del servicio correspondiente. Por defecto la ruta de los servicios suele ser: /default_host/sap/bc/bsp/sap/. Una vez conocida su ubicación se facilitará la URL al navegador (p.ej.: http://<servidor>:<puerto>/sap/bc/bsp/sap/aplicacion_ws/servicio_web.wsdl ). Tras introducir la ubicación del fichero WSDL se nos pedirá que nos identifiquemos en el sistema XI. A continuación, una vez cargado, pulsaremos sobre la opción Test y seleccionaremos la interfaz que deseamos probar pulsando sobre ella. Por último introduciremos los datos de entrada "a mano" y al pulsar el botón Send nos devolverá el mensaje de respuesta devuelto por el servidor. Este mecanismo es más visual e intuitivo pero no es muy rentable del punto de vista funcional ya que para pruebas que necesiten introducir muchos valores serían inviables de este modo.
Por último, también se podría usar la página HTML cuyo código se proporciona en este link, la cual permite tanto introducir el código de petición XML a mano como a través de fichero, además de otras opciones de selección relativas al tipo de comunicación del servicio.
Referencias:
Uno de ellos es mediante el uso de herramientas externas específicas como lo son:
- SAP SOAP Client Tool
- Altova XML Spy
- SOAP Scope
- WS Unit from Java.net
- soapUI (como comentó Jorge Anibal)
Otro modo sería a través de la herramienta SAP Web Services Navigator (for Web services created/deployed on SAP Web AS) que proporciona XI para probar sus servicios web. Esta herramienta es el Navegador de Web Services y se puede acceder a ella desde la URL http://<servidor>:<puerto_java>/wsnavigator/enterwsdl.html. En ella deberemos introducir la dirección URL del WSDL publicado en la máquina. Para conocer dónde están publicados los servicios dentro de XI deberemos ejecutar la transacción SICF y navegar por el árbol base hasta encontrar el nombre del servicio correspondiente. Por defecto la ruta de los servicios suele ser: /default_host/sap/bc/bsp/sap/. Una vez conocida su ubicación se facilitará la URL al navegador (p.ej.: http://<servidor>:<puerto>/sap/bc/bsp/sap/aplicacion_ws/servicio_web.wsdl ). Tras introducir la ubicación del fichero WSDL se nos pedirá que nos identifiquemos en el sistema XI. A continuación, una vez cargado, pulsaremos sobre la opción Test y seleccionaremos la interfaz que deseamos probar pulsando sobre ella. Por último introduciremos los datos de entrada "a mano" y al pulsar el botón Send nos devolverá el mensaje de respuesta devuelto por el servidor. Este mecanismo es más visual e intuitivo pero no es muy rentable del punto de vista funcional ya que para pruebas que necesiten introducir muchos valores serían inviables de este modo.
Por último, también se podría usar la página HTML cuyo código se proporciona en este link, la cual permite tanto introducir el código de petición XML a mano como a través de fichero, además de otras opciones de selección relativas al tipo de comunicación del servicio.
Referencias:
- How to Develop, Monitor and Debug WS Consumer and Provide
- XI/PI: A Guide to Using SAP XI SOAP Adapter
- How To… Use the XI 3.0 SOAP Adapter
- Testing sender web service Interfaces (SOAP) in PI 7.1
Etiquetas:
Web Services,
XI
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:
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:
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:
- Publishing Interface as Web Service (Web Service to RFC)
- How To… Use the XI 3.0 SOAP Adapter
- Walkthrough - SOAP <-> XI <-> FC/BAPI
UDDI:
- WebAS : A step by step guide for Configuring UDDI registry on Local Server
- XI : How To publish WSDL generated from XI to UDDI
Etiquetas:
Web Services,
XI
Suscribirse a:
Entradas (Atom)