Configurando Tipos de Mensagem SOAP sobre JMS
É possível configurar suas mensagens de pedido ou de resposta SOAP sobre Java™ Message Service (JMS) para usar objetos BytesMessage ou TextMessage.
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
Para seus serviços da Web que usam o protocolo SOAP sobre JMS padrão de mercado emergente, é possível configurar solicitações e respostas de SOAP sobre JMS para especificar se as mensagens são transmitidas de dentro de objetos JMS BytesMessage (javax.jms.BytesMessage) ou TextMessage (javax.jms.TextMessage). O tipo de mensagem padrão é BytesMessage.
Se a mensagem JMS for um BytesMessage, o corpo da mensagem JMS serão dados binários.
Se a mensagem JMS for um TextMessage, o corpo da mensagem JMS serão dados da cadeia. Por exemplo, considere a configuração de mensagens de texto, se desejar implementar um recurso de auditoria ou de criação de log que requeira que mensagens JMS sejam legíveis por humanos.
- Uso da memória -
A carga útil em um TextMessage é baseada em cadeia e, como os caracteres individuais são baseados na codificação de caracteres UTF-16, a carga útil em um TextMessage provavelmente ocupará o dobro de bytes que um BytesMessage equivalente. Para mensagens de pedido e de resposta com cargas úteis pequenas, esta diferença no uso da memória entre TextMessages e BytesMessages pode não ser importante mas, para cargas úteis grandes, a diferença no uso da memória por se tornar mais importante para ser considerado para seu ambiente de negócios.
- Anexos binários -
Quando um TextMessage JMS for usado para transportar mensagens de pedido e de resposta, os anexos binários incluídos no corpo da mensagem SOAP deverão ser codificados por base64, porque a carga útil da mensagem subjacente é baseada em cadeia. Quando anexos binários forem codificados por base64, serão necessários tempo de processamento e memória adicionais para executar a transformação nesses dados. Portanto, é possível que o anexo binário codificado por base64 seja até um terço maior do que a versão não codificada original do anexo. Neste caso, se esta parte do anexo codificado maior for transportada em uma carga útil de mensagem baseada em cadeia, o uso da memória necessária para transportar a parte do anexo binário poderá ter quase três vezes o tamanho da memória do anexo binário não codificado original em um BytesMessage.
Procedimento
Resultados
Você configurou um cliente de serviço da Web para usar os objetos TextMessage ou BytesMessage ao usar o protocolo SOAP sobre JMS para transmitir mensagens de solicitação e resposta.