Protocolo SOAP sobre JMS

O mecanismo de serviços da Web suporta o uso de um transporte de sistema de mensagens compatível com SOAP sobre Java™ Message Service (JMS) padrão de mercado emergente como uma alternativa para o HTTP se comunicar com as mensagens SOAP entre os clientes e servidores.

Configurações suportadas Configurações suportadas: 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. sptcfg

A IBM® e outros fornecedores têm trabalhado na especificação SOAP em JMS proposta desde 2005. A especificação foi submetida à W3C, e um grupo de trabalho foi estabelecido. A submissão de membro atual dessa especificação de rascunho foi publicada conjuntamente em outubro de 2007. Consulte a especificação SOAP em JMS para obter detalhes sobre esse padrão de mercado.

Use o protocolo de transporte SOAP via JMS se for necessário fornecer implementações para os componentes do cliente ou do servidor. Além disso, é necessário certificar-se de que as implementações sejam interoperáveis com os componentes do cliente e do servidor fornecidos pelo mecanismo de serviços da Web no WebSphere Application Server.

O componente cliente é responsável pelo envio de mensagens de pedido SOAP e recepção das mensagens de resposta do SOAP ao aderir aos seguintes limites de protocolos:
  • O cliente deve usar o objeto javax.jms.BytesMessage ou um objeto javax.jms.TextMessage para transmitir a mensagem de pedido SOAP para o servidor.
  • O cliente deve configurar as seguintes propriedades na mensagem de pedido do JMS antes de enviar a mensagem para a fila ou tópico de destino:
    • SOAPJMS_contentType: Essa propriedade é semelhante ao cabeçalho Content-Type localizado em uma mensagem HTTP e é utilizada para descrever o tipo de conteúdo da mensagem. Uma mensagem SOAP apenas de texto, por exemplo, uma mensagem sem anexos, tem o seguinte valor configurado para essa propriedade de mensagem JMS:
      text/xml; charset="UTF-8"
      Para uma mensagem SOAP contendo anexos, utilize o seguinte código para configurar a propriedade SOAPJMS_contentType na mensagem JMS:
      multipart/related; type="text/xml"; start="<...content-id_of_first_ part...>" 
      Esse exemplo representa uma mensagem multipartes, em que a primeira parte é do tipo text/xml e contém o envelope SOAP. As outras partes da mensagem multipartes contêm vários anexos. A especificação HTTP 1.1 contém informações adicionais sobre o cabeçalho Content-Type.
    • enableTransaction: Configure essa propriedade opcional para true em uma mensagem de solicitação JMS de saída se desejar que o componente do servidor processe a solicitação de serviço da Web na mesma transação que foi usada para receber a mensagem da fila ou do tópico de destino. Esta propriedade é uma extensão IBM para a especificação SOAP sobre JMS.
      Boas Práticas Boas Práticas: Para os componentes do cliente, configure essa propriedade para true apenas para solicitações assíncronas unidirecionais ou bidirecionais para evitar problemas de sincronização que possam ocorrer com solicitações de serviço da Web síncronas bidirecionais. Se essa propriedade não for configurada ou for configurada para o valor padrão false, o servidor suspenderá a transação que foi usada para receber a mensagem de solicitação a partir da fila ou tópico de destino antes de chamar o mecanismo de serviços da Web para processar a solicitação.bprac
    • SOAPJMS_requestURI: Você deve configurar essa propriedade com a URL do terminal JMS associada ao pedido.
    • SOAPJMS_soapAction: Essa propriedade opcional é configurada em uma mensagem de solicitação JMS de saída para indicar o valor soapAction associado à solicitação de serviços da Web. Essa propriedade é semelhante ao cabeçalho SOAPAction HTTP usado quando transportar as solicitações de serviço da Web sobre um transporte HTTP. O valor da propriedade soapAction é um URI que identifica a intenção do pedido SOAP. Se a propriedade SOAPJMS_soapAction for especificada, ela será utilizada pelo componente de servidor para determinar o destino do pedido. A especificação SOAP não coloca nenhuma restrição sobre o formato ou a especificidade do URI nem a especificação requer que seja possível resolver o URI. Normalmente, essa propriedade é configurada para o valor soapAction do documento WSDL.
    • SOAPJMS_targetService: Você deve configurar essa propriedade em uma mensagem de pedido do JMS de saída, e o valor deve corresponder ao valor da propriedade targetService localizado na URL do terminal JMS do pedido. Esse valor é utilizado pelo componente de servidor para determinar o componente da porta para o qual o pedido é despachado.
    • SOAPJMS_bindingVersion: Essa propriedade indica o número da versão do protocolo utilizado pelo cliente e pelo servidor. Configure o valor como 1.0.
  • Se a mensagem representar um pedido bidirecional, ou seja, uma resposta é esperada, o componente de cliente deverá configurar a propriedade JMSReplyTo da mensagem JMS para especificar a fila utilizada para a mensagem de resposta. O método setJMSReplyTo da mensagem JMS é utilizado para especificar a fila. É possível beneficiar-se da configuração de uma fila de resposta permanente no cliente para evitar que o cliente tenha que criar uma fila temporária sempre que uma solicitação de serviço da Web seja feita. Consulte sobre a configuração de uma fila de resposta permanente para os serviços da Web usando o SOAP sobre JMS para aprender mais sobre a criação dessa fila especial.
  • Se a mensagem de pedido do SOAP representar um pedido unidirecional, ou seja, uma mensagem de resposta não é esperada, o componente de cliente não deverá configurar a propriedade JMSReplyTo da mensagem JMS.
  • O componente de cliente pode supor que uma mensagem de resposta seja um objeto BytesMessage do JMS.
  • O componente do cliente pode supor que o ID de correlação da mensagem de resposta corresponda ao ID da mensagem do pedido original.
O componente de servidor é responsável pelo recebimento de mensagens de pedido do SOAP e pelo envio de mensagens de resposta do SOAP, ao aderir às seguintes restrições do protocolo:
  • O componente de servidor pode esperar receber uma BytesMessage do JMS. Se algum outro, além de um BytesMessage, for recebido pelo componente do servidor, uma falha com o subcódigo unsupportedJMSMessageFormat será retornada ao cliente se uma resposta for esperada.
  • O componente do servidor pode esperar receber um objeto javax.jms.BytesMessage ou um objeto javax.jms.TextMessage. Se algum outro diferente de BytesMessage ou TextMessage for recebido pelo componente do servidor, uma falha com o subcódigo unsupportedJMSMessageFormat será retornada ao cliente se uma resposta for esperada.
  • O componente do servidor deve processar o pedido SOAP apropriadamente para produzir uma mensagem de resposta SOAP apropriada.
  • O componente do servidor deve enviar uma mensagem de resposta de volta para o cliente apenas se a propriedade JMSReplyTo da mensagem de pedido JMS estiver configurada. O método getJMSReplyTo da mensagem JMS é utilizado para recuperar o valor da propriedade JMSReplyTo a partir da mensagem JMS. Esse valor da propriedade indica o destino da resposta.
  • Ao enviar uma mensagem de resposta, o componente do servidor deverá usar o mesmo tipo de mensagem como pedido. Se o pedido for recebido como um BytesMessage, a resposta deverá ser enviada como um ByteMessage. Da mesma forma, se o pedido for recebido como um TextMessage, a resposta deverá ser enviada como um TextMessage.
  • O componente do servidor deve configurar as seguintes propriedades na mensagem de resposta do JMS antes de enviar a mensagem para a fila de resposta:
    • SOAPJMS_contentType: Essa propriedade é utilizada para descrever o tipo de conteúdo da mensagem. Consulte a descrição dessa propriedade na seção de responsabilidades do cliente neste tópico.
    • correlation ID: Configure a propriedade de ID de correlação da mensagem de resposta do JMS com o ID da mensagem de pedido original do JMS. Essa correlação é feita chamando-se o método setJMSCorrelationID da mensagem JMS.
    • SOAPJMS_bindingVersion: Essa propriedade indica o número da versão do protocolo utilizado pelo cliente e pelo servidor. Configure o valor como 1.0.

O exemplo a seguir exibe os resultados da chamada do método toString da mensagem JMS de uma mensagem de pedido sem anexos:

  JMSMessage class: jms_bytes
  JMSType:          null
  JMSDeliveryMode:  2
  JMSExpiration:    0
  JMSPriority:      4
  JMSMessageID:     null
  JMSTimestamp:     -1
  JMSCorrelationID: null
  JMSDestination:   null
  JMSReplyTo:       queue://_Q_7D6C2035383215AB00000000000F4241?busName=WsFvtBus
  JMSRedelivered:   false
    JMS_IBM_MsgType: 1
    SOAPJMS_contentType: text/xml; charset=UTF-8
    SOAPJMS_targetService: MaelstromWsEndpoint
    SOAPJMS_requestIRI: jms:jndi:jms/MyRequestQueue?jndiConnectionFactoryName=jms/MyConnFactory&targetService=MyPort1
    SOAPJMS_soapAction: "getQuote"
    SOAPJMS_bindingVersion: 1.0
3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d227574662d38223f3e3c73
6f6170656e763a456e76656c6f706520786d6c6e733a736f6170656e763d22687474703a2f2f7363
68656d61732e786d6c736f61702e6f72672f736f61702f656e76656c6f70652f2220786d6c6e733a
7873643d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368656d61222078
...
O exemplo a seguir exibe os resultados da chamada do método toString da mensagem JMS de uma mensagem de pedido com anexos:
  JMSMessage class: jms_bytes
  JMSType:          null
  JMSDeliveryMode:  2
  JMSExpiration:    0
  JMSPriority:      4
  JMSMessageID:     null
  JMSTimestamp:     -1
  JMSCorrelationID: null
  JMSDestination:   null
  JMSReplyTo:       queue://_Q_F0940794C5CC2F84000000000044AA21?busName=WsFvtBus
  JMSRedelivered:   false
    JMS_IBM_MsgType: 1
    SOAPJMS_contentType: multipart/related; 
		boundary=MIMEBoundaryurn_uuid_B6BAFEADB1886ADC241205525550237; 
		type="text/xml"; start="<0.urn:uuid:B6BAFEADB1886ADC241205525550238@apache.org>"
    SOAPJMS_targetService: MaelstromWsEndpoint
    SOAPJMS_requestIRI: jms:jndi:jms/WebSvcsJMSQ?jndiConnectionFactoryName=
			jms/WebSvcsJMS_CF&targetService=MaelstromWsEndpoint
    SOAPJMS_soapAction: attachment
    SOAPJMS_bindingVersion: 1.0
2d2d4d494d45426f756e6461727975726e5f757569645f4236424146454144423138383641444332
34313230353532353535303233370d0a436f6e74656e742d547970653a20746578742f786d6c3b20
636861727365743d5554462d380d0a436f6e74656e742d5472616e736665722d456e636f64696e67
3a20386269740d0a436f6e74656e742d49443a203c302e75726e3a757569643a4236424146454144
4231383836414443323431323035353235353530323338406170616368652e6f72673e0d0a0d0a3c
736f6170656e763a456e76656c6f706520786d6c6e733a736f6170656e763d22687474703a2f2f73
6368656d61732e786d6c736f61702e6f72672f736f61702f656e76656c6f70652f2220786d6c6e73
3a7873643d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368656d612220
786d6c6e733a7873693d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368
656d612d696e7374616e63652220786d6c6e733a736f6170656e633d22687474703a2f2f73636865
...
O exemplo a seguir exibe os resultados da chamada do método toString da mensagem JMS de uma mensagem de resposta do SOAP:
JMSMessage class: jms_bytes
JMSType:          null
JMSDeliveryMode:  2
JMSExpiration:    0
JMSPriority:      4
JMSMessageID:     null
JMSTimestamp:     0
JMSCorrelationID: ID:cdddb857f078a266eb9a972f110a134f0000000000000001
JMSDestination:   null
JMSReplyTo:       null
JMSRedelivered:   false
contentType:
  multipart/related;
  type="text/xml"; 
  start="<961368106530.1092112854745.IBM.WEBSERVICES@yackerjr>";
  boundary="----=_Part_0_1655006754.1092112854745"
0d0a2d2d2d2d2d2d3d5f506172745f305f313635353030363735342e313039323131323835343734
350d0a436f6e74656e742d547970653a20746578742f786d6c3b20636861727365743d5554462d38
...

Ícone que indica o tipo de tópico Tópico de Referência



Í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=rwbs_soapjmsstd
Nome do arquivo: rwbs_soapjmsstd.html