Using SOAP Sobre JMS para Transportar Serviços da Web

É possível usar o protocolo de transporte JMS (Java™ Message Service) como uma alternativa para transmitir as mensagens SOAP entre clientes e servidores através de SOAP sobre HTTP.

Antes de Iniciar

Um serviço da Web deve ser implementado como um enterprise bean para acessibilidade por meio do transporte JMS.

Sobre Esta Tarefa

Este produto oferece suporte a um SOAP padrão de mercado emergente sobre o protocolo JMS. A especificação SOAP sobre JMS fornece um conjunto padrão de diretrizes de interoperabilidade para utilizar um transporte compatível com JMS com mensagens SOAP para permitir a interoperabilidade entre as implementações de diferentes fornecedores. Usando esse padrão, uma mistura de componentes clientes e componentes do servidor de diferentes fornecedores pode interoperar ao trocar solicitações SOAP e mensagens de resposta no transporte JMS para o Java API for XML Web Services (JAX-WS) e os serviços da Web do Java API for XML-based RPC (JAX-RPC). Ao usar o transporte JMS, os clientes e servidores de serviço da Web baseados em beans corporativos podem se comunicar por meio de filas e tópicos JMS em vez de por meio de conexões HTTP.

Recurso Reprovado Recurso Reprovado: Em versões anteriores do servidor de aplicativos, um protocolo SOAP sobre JMS do proprietário IBM® era suportado para aplicativos JAX-RPC (Java API for XML-based RPC). No WebSphere Application Server 7.0, esse protocolo proprietário SOAP sobre JMS agora está reprovado em favor de um protocolo emergente SOAP sobre JMS padrão de mercado. É possível usar o protocolo SOAP sobre JMS de propriedade IBM com seu Java API for XML Web Services (JAX-WS) ou os serviços da Web JAX-RPC; entretanto, aproveite o protocolo SOAP sobre JMS padrão emergente. Se seu aplicativo padrão chamar serviços da Web baseados em Enterprise Beans que são suportados por uma versão anterior do WebSphere Application Server, será necessário continuar a usar o protocolo SOAP sobre JMS de propriedade IBM para acessar esses serviços da Web. depfeat
Os benefícios de usar JMS incluem:
  • O transporte do sistema de mensagens confiável para comunicar mensagens de pedido e resposta.
  • Pedidos flexíveis de via única a clientes e servidores. Por exemplo, o servidor não tem que estar ativo quando o cliente envia o pedido de sentido único. Pedidos simultâneos de via única podem ser enviados a vários servidores através da utilização de um tópico.
  • Pedidos Síncronos de duas vias são suportados para aJava API for XML-Based Web Services (JAX-WS) e para clientes de Java API for XML-based RPC (JAX-RPC).
  • Os pedidos assíncronos são suportados para clientes JAX-WS.

A especificação SOAP sobre JMS define uma sintaxe URI de terminal JMS para especificar os destinos JMS. Uma URL de terminal JMS é usada para acessar serviços da Web JAX-WS ou JAX-RPC com o transporte JMS. Essa URL especifica o destino JMS e a conexão fábrica, assim como o nome do componente de porta para o pedido de serviço da Web. Esse URL de nó de extremidade é semelhante à URL de nó de extremidade HTTP, que especifica o host e a porta, assim como a raiz de contexto e o nome do componente da porta.

Procedimento

  1. Desenvolva o enterprise bean que você pretende utilizar como bean de implementação do serviço.
  2. Para aplicativos JAX-WS, inclua a anotação @BindingType na classe de implementação do terminal e especifique o ID da ligação SOAP sobre JMS para o terminal. Por exemplo:
    @WebService 
    @BindingType("http://www.w3.org/2010/soapjms/")
    public class MyServiceBeanImpl {
        ...
    }

    A anotação @BindingType é usada para indicar o protocolo (SOAP) e o transporte (JMS) a serem usados ao enviar mensagens de solicitação e de resposta para o terminal.

  3. Monte os enterprise beans.
    1. Monte um arquivo JAR que está ativado para serviços da Web a partir de um enterprise bean. É possível montar os artefatos que são necessários para ativar o módulos dos enterprise beans para serviços da Web em um arquivo Java archive (JAR).
    2. Monte um arquivo JAR de enterprise bean ativado para serviços da Web em um arquivo enterprise archive (EAR). É possível montar os artefatos necessários para ativar o arquivos JAR ativado para serviços da Web em um arquivo EAR.
  4. Ative os terminais baseados em enterprise beans, utilizando o comando endptEnabler. Use a opção -transport jms para pedir que o comando endptEnabler crie um listener message-driven bean (MDB) para cada arquivo JAR Enterprise JavaBeans (EJB) que contenha beans de implementação de serviços da Web. Esse bean acionado por mensagens serve como um listener para pedidos que estão associados com os terminais de serviço da Web contidos no arquivo JAR EJB
  5. Decida sobre os nomes e os tipos dos objetos JMS utilizados por seu aplicativo.

    Antes de instalar seu aplicativo, você precisa:

    • Decida se seu serviço da Web recebe pedidos de uma fila ou de um tópico.
      • Decida se é necessário utilizar um destino seguro ou um destino não seguro.
      • Decida os nomes para as suas filas e tópicos, o connection factory e a especificação de ativação.
    Utilize as seguintes diretrizes para decidir os tipos e os nomes do objeto JMS. Em situações normais, você pode usar uma fila para receber pedidos de serviços da Web.
    • Fila
      • Uma fila recebe todos os tipos de pedidos. Os pedidos válidos incluem unidirecionais, bidirecionais e síncronos. A solicitação assíncrona é válida somente com serviços da Web JAX-WS.
      • Uma fila é utilizada somente por um único arquivo EJB JAR para receber os pedidos de terminais de serviço da Web contidos com esse arquivo EJB JAR.
    • Tópico
      • Um tópico é utilizado para receber apenas os pedidos unidirecionais.
      • É possível compartilhar um tópico entre vários arquivos JAR EJB. Cada mensagem de pedido que é enviada para um tópico é processada por cada um dos listeners MDB configurados para atender nesse tópico. Isso significa que cada mensagem de pedido é processada por cada arquivo JAR EJB associado a esse tópico específico.

    O exemplo a seguir descreve uma configuração típica para um único arquivo EJB JAR que contém terminais de serviços da Web:

    • Suponha que o arquivo JAR EJB seja StockQuoteEJB.jar e contém um ou mais terminais de serviços da Web relacionados ao serviço StockQuote.
    • Você tem uma única fila, StockQuote_Q, com o nome JNDI, jms/StockQuote_Q, que é utilizada para receber pedidos.
    • Você possui uma connection factory, StockQuote_CF, com nome JNDI, jms/StockQuote_CF, que pode ser utilizada pelos clientes para se conectarem ao provedor JMS.
    • Você também possui uma connection factory, StockQuote_ReplyCF, com nome JNDI, jms/StockQuote_ReplyCF, que é utilizada pelo listener MDB para o arquivo EJB JAR para conectar-se ao provedor JMS durante o envio de mensagens de resposta.
    • Você tem uma especificação de ativação, StockQuote_AS, com nome JNDI, jms/StockQuote_AS, que é usada para associar o listener MDB do StockQuoteEJB.jar com a fila denominada StockQuote_Q.
  6. Defina os objetos administrados JMS.

    Depois de decidir sobre os nomes e tipos dos objetos JMS, utilize o console administrativo ou a ferramenta de script wsadmin para definir os objetos JMS. Há várias maneiras de administrar recursos JMS, dependendo de que tipo de provedor JMS está sendo utilizado. Leia sobre a escolha de um provedor do sistema de mensagens para aprender mais sobre a administração dos recursos JMS.

  7. Implemente o aplicativo de serviços da Web.
    Durante o processo de instalação você é avisado sobre dois tipos de informações para cada arquivo JAR de enterprise bean que está ativado para servidos da Web e que está contido em seu arquivo EAR:
    • O nome JNDI do Connection Factory que é utilizado pelo listener MDB a ser utilizado para enviar mensagens de resposta.

      Se seu serviço da Web contém operações de duas vias, o listener MDB que está definido pelo comando endptEnabler precisa acessar um factory de conexão da fila para incluir uma mensagem de resposta à fila de resposta. O listener MDB utiliza uma referência de ambiente de recurso de java:comp/env/jms/WebServicesReplyQCF. Portanto, durante o processo de instalação do aplicativo, você deve fornecer o nome JNDI real do connection factory para o listener MDB utilizar para esse serviço da Web. Utilizando o exemplo anterior, o nome JNDI é jms/StockQuote_ReplyCF.

    • O nome da especificação de ativação para o listener MDB utilizar.

      Uma especificação de ativação é um objeto utilizado para associar um Connection Factory JMS a um destino JMS (fila ou tópico). Quando implementado, um MDB é configurado com a especificação de ativação correta de modo que as mensagens da fila ou do tópico sejam corretamente entregues ao MDB. Durante a implementação, você pode modificar o nome da especificação de ativação associada a cada listener MDB. O nome da especificação de ativação contido no arquivo EAR de entrada é exibido como um valor padrão. Se você especificar o nome de especificação de ativação correto para o comando endptEnabler, poderá aceitar o valor padrão. Caso contrário, digite o nome da especificação de ativação correto.

  8. Decida se deseja usar o novo protocolo SOAP sobre JMS padrão de mercado ou o protocolo SOAP/JMS proprietário da IBM.
    Boas Práticas Boas Práticas: Esta é uma boa prática para utilizar o protocolo SOAP/JMS padrão de mercado. O protocolo SOAP/JMS proprietário da IBM foi reprovado com este release. No entanto, se seu aplicativo precisar interoperar com versões anteriores do produto, utilize o protocolo proprietário.bprac
    • Se você utilizar o protocolo SOAP sobre JMS padrão de mercado, utilize a tarefa Configurar Informações de URL do Terminal para Ligações JMS para especificar um prefixo de URL do terminal JMS que siga a sintaxe de URI do terminal JMS associado ao padrão; por exemplo:
      jms:jndi:jms/StockQuote_Q&jndiConnectionFactoryName=jms/StockQuote_CF
    • Se você utilizar o protocolo SOAP via JMS proprietário da IBM, utilize a tarefa Configurar informações de URL do terminal para ligações JMS para especificar um prefixo de URL do terminal JMS que siga o protocolo SOAP via JMS proprietário da IBM, por exemplo:
      jms:/queue?destination=jms/StockQuote_Q&connectionFactory=jms/StockQuote_CF
  9. (Opcional) Configure as informações da URL do terminal para ligações JMS.

    Utilize o console administrativo para configurar um prefixo de URL de terminal JMS que você possa associar a cada módulo JAR EJB em seu aplicativo. O publicador WSDL utiliza essa cadeia de URL parcial para produzir a URL JMS real para cada componente de porta definido no arquivo JAR de enterprise bean. Os clientes que precisam chamar o serviço da Web podem usar o arquivo WSDL publicado.

    Execute essa etapa somente se estiver publicando o arquivo WSDL para seu aplicativo.

  10. (Opcional) Publique o arquivo WSDL para seu aplicativo.

    A publicação do arquivo WSDL produz documentos WSDL que você pode utilizar para desenvolver seus aplicativos clientes. O processo de publicação produz as URLs de local de terminal resolvidas completamente dentro dos arquivos WSDL.

    Execute essa etapa somente se os arquivos WSDL publicados forem necessários para desenvolver seus aplicativos clientes.

Resultados

Você possui um serviço da Web que está configurado para usar SOAP via JMS para transportar os pedidos.

O que Fazer Depois

Desenvolva um cliente de serviços da Web.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_soapjmstransportwbs
Nome do arquivo: twbs_soapjmstransportwbs.html