Utilización de SOAP a través de JMS para transportar servicios web

Puede utilizar el protocolo de transporte SOAP sobre JMS (Java™ Message Service) como alternativa a SOAP sobre HTTP para comunicar mensajes SOAP entre clientes y servidores.

Antes de empezar

Un servicio web debe implementarse como un enterprise bean para acceder a través del transporte JMS.

Acerca de esta tarea

Este producto da soporte al emergente protocolo SOAP sobre JMS estándar del sector. La especificación SOAP sobre JMS proporciona un conjunto estándar de directrices de interoperatividad para utilizar un transporte compatible con JMS con mensajes SOAP para habilitar la interoperatividad entre las implementaciones de proveedores diferentes. Mediante este estándar, una mezcla de componentes de cliente y servidor de distintos proveedores pueden interoperar cuando intercambian mensajes de respuesta y solicitud SOAP a través del transporte JMS tanto para los servicios web JAX-WS (Java API for XML Web Services) como para los servicios web JAX-RPC (Java API for XML-based RPC). Gracias al uso del transporte JMS, los servidores y los clientes de servicios web basados en enterprise beans pueden comunicarse a través de colas y temas JMS, en lugar de mediante conexiones HTTP.

Deprecated feature Deprecated feature: En versiones anteriores del servidor de aplicaciones, un protocolo de SOAP sobre JMS con marca registrada de IBM® estaba soportado por aplicaciones JAX-RPC (Java API for XML-based RPC). En WebSphere Application Server 7.0 y posterior, este protocolo SOAP sobre JMS de propiedad ahora está en desuso a favor del protocolo emergente del sector SOAP sobre JMS. Puede utilizar el protocolo SOAP sobre JMS patentado de IBM con los servicios web JAX-WS (Java API for XML Web Services) o los servicios web JAX-RPC; sin embargo, se recomienda aprovechar el protocolo emergente SOAP sobre JMS estándar del sector. Si su aplicación cliente invoca a servicios web basados en enterprise beans que están soportados en una versión anterior de WebSphere Application Server, debe seguir utilizando el protocolo propietario de IBM SOAP sobre JMS para acceder a estos servicios web.depfeat
Las ventajas de utilizar JMS son:
  • Transporte de mensajería fiable para la comunicación de mensajes de solicitud y respuesta.
  • Solicitudes flexibles en un único sentido para clientes y servidores. Por ejemplo, el servidor no tiene que estar activo cuando el cliente envía la solicitud en un único sentido. Se pueden enviar solicitudes simultáneas en un único sentido a varios servidores mediante la utilización de un tema.
  • Se admiten las solicitudes bidireccionales síncronas tanto para clientes JAX-WS (Java API for XML-Based Web Services) como para clientes JAX-RPC (Java API for XML-based RPC).
  • Se da soporte a solicitudes síncronas para clientes JAX-WS.

La especificación SOAP sobre JMS define una sintaxis de URI de punto final JMS para especificar los destinos JMS. Se utiliza un URL de punto final JMS (Java Message Service) para acceder a servicios web JAX-WS y JAX-RPC con el transporte JMS. Este URL especifica el destino JMS y la fábrica de conexiones, así como el nombre del componente de puerto de la solicitud de servicio web. Este URL de punto final es similar al URL de punto final HTTP, que especifica el host y el puerto, así como el directorio raíz de contexto y el nombre del componente de puerto.

Procedimiento

  1. Desarrolle el enterprise bean que desee utilizar como bean de implementación de servicio.
  2. Para aplicaciones JAX-WS, añada la anotación @BindingType a la clase de implementación de punto final y especifique el ID de enlace SOAP sobre JMS del punto final. Por ejemplo:
    @WebService 
    @BindingType("http://www.w3.org/2010/soapjms/")
    public class MyServiceBeanImpl {
        ...
    }

    Se utiliza la anotación @BindingType para indicar el protocolo (SOAP) y transporte (JMS) que se utilizará al enviar mensajes de solicitud y respuesta para el punto final.

  3. Ensamble los enterprise beans.
    1. Ensamble un archivo JAR habilitado para servicios web con un enterprise bean. Puede ensamblar los artefactos que son necesarios para habilitar el módulo de los enterprise beans para los servicios web en un archivo JAR (Java Archive).
    2. Ensamble un archivo JAR de enterprise bean habilitado para servicios web en un archivo EAR (Enterprise Archive).. Puede ensamblar los artefactos que son necesarios para habilitar el archivo JAR habilitado para los servicios web en un archivo EAR.
  4. Habilite los puntos finales basados en enterprise beans utilizando el mandato endptEnabler. Utilice la opción -transport jms para solicitar que el mandato endptEnabler cree un escucha MDB (Bean controlado por mensaje) para cada archivo JAR de EJB (JavaBeans) que contiene los beans de implementación de servicios web. Este bean controlado por mensajes sirve como escucha de las solicitudes asociadas a los puntos finales de servicios web contenidas en el archivo JAR de EJB.
  5. Decida los nombres y los tipos de los objetos JMS que utiliza la aplicación.

    Antes de instalar la aplicación, es necesario que:

    • Decida si el servicio web va a recibir solicitudes de una cola o un tema.
      • Decida si va a utilizar un destino protegido o un destino no protegido.
      • Decida los nombres de las colas y temas, de la fábrica de conexiones y de la especificación de activación.
    Utilice las directrices siguientes para decidir los nombres y tipos de objetos JMS. En las situaciones más comunes, puede utilizar una cola para recibir solicitudes de servicios web.
    • Cola
      • Una cola recibe todos los tipos de solicitudes. Las solicitudes válidas son unidireccionales, bidireccionales y síncronas. Las solicitudes asíncronas sólo son válidas con servicios web JAX-WS.
      • Una cola sólo la utiliza un único archivo JAR de EJB para recibir las solicitudes de puntos finales de servicios web contenidas en dicho archivo JAR de EJB.
    • Tema
      • Un tema se utiliza para recibir únicamente solicitudes unidireccionales.
      • Puede compartir un tema entre varios archivos JAR de EJB. Cada mensaje de solicitud que se envía a un tema lo procesa cada uno de los escuchas MDB configurados para escuchar dicho tema. Esto significa que cada mensaje de solicitud lo procesa cada archivo JAR de EJB asociado a dicho tema específico.

    El ejemplo siguiente describe una configuración típica de un archivo JAR de EJB que contiene los puntos finales de servicios web:

    • Suponga que el archivo JAR de EJB es StockQuoteEJB.jar y contiene uno o varios puntos de servicios web relacionados con el servicio StockQuote.
    • Tiene una sola cola, StockQuote_Q, cuyo nombre JNDI es jms/StockQuote_Q, que se utiliza para recibir solicitudes.
    • Tiene una fábrica de conexiones, StockQuote_CF, cuyo nombre JNDI es jms/StockQuote_CF, que los clientes pueden utilizar para conectarse al proveedor JMS.
    • También tiene una fábrica de conexiones, StockQuote_ReplyCF, cuyo nombre JNDI es jms/StockQuote_ReplyCF, que utiliza el escucha MDB para que el archivo JAR de EJB se conecte al proveedor JMS cuando envía mensajes de respuesta.
    • Tiene una especificación de activación, StockQuote_AS, con el nombre JNDI, jms/StockQuote_AS, que se utiliza para asociar el escucha MDB del archivo StockQuoteEJB.jar con la cola denominada StockQuote_Q.
  6. Defina los objetos administrados por JMS.

    Una vez que haya decidido los nombres y tipos de objetos JMS, utilice la consola administrativa o la herramienta de scripts wsadmin para definir los objetos JMS. Hay varios modos de administrar los recursos JMS, en función del tipo de proveedor JMS que se esté utilizando. Consulte la información acerca de cómo seleccionar un proveedor de mensajería para obtener información sobre cómo se administran los recursos JMS.

  7. Despliegue la aplicación de servicios web.
    Durante el proceso de instalación se le solicitarán dos tipos de información para cada archivo JAR de enterprise bean habilitado para servicios web y que esté incluido en el archivo EAR:
    • El nombre JNDI de la fábrica de conexiones que debe utilizar un escucha MDB para enviar los mensajes de respuesta.

      Si el servicio web contiene operaciones bidireccionales, es necesario que el escucha MDB definido mediante el mandato endptEnabler acceda a una fábrica de conexiones de cola para añadir un mensaje de respuesta a la cola de respuesta. El escucha MDB utiliza una referencia de entorno de recursos de java:comp/env/jms/WebServicesReplyQCF. Por lo tanto, durante el proceso de instalación de aplicaciones, debe proporcionar el nombre JNDI real de la fábrica de conexiones de cola que un escucha MDB utilizará para ese servicio web. Utilizando el ejemplo anterior, el nombre JNDI es jms/StockQuote_ReplyCF.

    • El nombre de la especificación de activación del escucha MDB que se va a utilizar.

      Una especificación de activación es un objeto que se utiliza para asociar un fábrica de conexiones de JMS a un destino JMS (cola o tema). Cuando despliegue un MDB, éste se configura con la especificación de activación correcta, de modo que los mensajes de la cola o tema se envían correctamente al MDB. Durante el despliegue, puede modificar el nombre de la especificación de activación que se ha asociado con cada escucha MDB. El nombre de la especificación de activación contenido en el archivo EAR de entrada aparece como valor predeterminado. Si, durante el paso 3, especifica el nombre de la especificación de activación correcto en el mandato endptEnabler, puede aceptar el valor predeterminado. De lo contrario, entre el nombre de la especificación de activación correcto.

  8. Decida si utiliza el nuevo protocolo SOAP sobre JMS estándar del sector o el protocolo SOAP/JMS de IBM.
    Best practice Best practice: Se le recomienda que utilice el protocolo SOAP/JMS estándar del sector. El protocolo SOAP/JMS de IBM ha quedado en desuso en este release. Sin embargo, si la aplicación necesita interactuar con versiones anteriores el producto, utilice el protocolo de IBM.bprac
    • Si utiliza el protocolo SOAP sobre JMS estándar del sector, utilice la tarea Configurar información de URL de punto final para enlaces JMS para especificar un prefijo de URL de punto final JMS que se adhiera a la sintaxis del URI de punto final JMS asociado al estándar; por ejemplo:
      jms:jndi:jms/StockQuote_Q&jndiConnectionFactoryName=jms/StockQuote_CF
    • Si utiliza el protocolo SOAP sobre JMS de IBM, utilice la tarea Configurar información de URL de punto final para enlaces JMS para especificar un prefijo de URL de punto final JMS que se adhiera al protocolo SOAP sobre JMS de IBM; por ejemplo:
      jms:/queue?destination=jms/StockQuote_Q&connectionFactory=jms/StockQuote_CF
  9. (Opcional) Configure la información del URL de punto final para los enlaces JMS.

    Utilice la consola administrativa para configurar un prefijo de URL de punto final JMS que pueda asociar con cada módulo JAR de EJB en la aplicación. El editor WSDL utiliza esta serie de URL parcial para producir el URL JMS para cada componente de puerto definido en el archivo JAR de enterprise bean. Los clientes que necesiten invocar el servicio web pueden utilizar el archivo WSDL publicado.

    Realice este paso sólo si va a publicar el archivo WSDL para la aplicación.

  10. (Opcional) Publique el archivo WSDL para la aplicación.

    Al publicar el archivo WSDL, se generan documentos WSDL que se pueden utilizar para desarrollar las aplicaciones de cliente. El proceso de publicación produce URL de ubicación de punto final totalmente resueltos en los archivo WSDL.

    Realice este paso sólo si los archivos WSDL publicados son necesarios para desarrollar las aplicaciones cliente.

Resultados

Tiene un servicio web configurado para utilizar SOAP sobre JMS para transportar las solicitudes.

Qué hacer a continuación

Desarrolle un cliente de servicios web.


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_soapjmstransportwbs
File name: twbs_soapjmstransportwbs.html