Configuración de tipos de mensajes SOAP a través de JMS
Puede configurar que los mensajes de solicitud o respuesta SOAP a través de Java™ Message Service (JMS) utilicen objetos BytesMessage o TextMessage.
Antes de empezar
Un servicio web se debe implementar como un enterprise bean para poder acceder a través del transporte JMS.
Acerca de esta tarea
Para los servicios web que utilizan el protocolo estándar emergente en el sector SOAP a través de JMS, se puede configurar que las solicitudes y respuestas SOAP a través de JMS especifiquen si los mensajes se transmiten dentro de objetos JMS BytesMessage (javax.jms.BytesMessage) o TextMessage (javax.jms.TextMessage). El tipo de mensaje predeterminado es BytesMessage.
Si el tipo de mensaje JMS es un BytesMessage, el cuerpo del mensaje JMS es de tipo de datos binarios.
Si el tipo de mensaje JMS es TextMessage, el cuerpo del mensaje JMS es de tipo de datos String. Por ejemplo, contemple la posibilidad de configurar mensajes de texto si desea implementar un recurso de auditoría o de registro que requiere mensajes JMS que se pueden leer.
- Uso de la memoria:
La carga útil en un TextMessage se basa en una serie y debido a que los caracteres individuales se basan en la codificación UTF-16, es probable que la carga en un TextMessage ocupe el doble de bytes que un BytesMessage equivalente. Para mensajes de solicitud y respuesta con pequeñas cargas, es posible que esta diferencia en uso de la memoria entre TextMessages y BytesMessages no sea importante pero, para grandes cargas, puede que sea importante considerar la diferencia en uso de la memoria para un entorno empresarial.
- Adjuntos binarios:
Cuando se utiliza un JMS TextMessage para transportar mensajes de solicitud y respuesta, los datos adjuntos binarios que se incluyen junto con el cuerpo del mensaje SOAP deben estar codificados en base64 puesto que la carga del mensaje subyacente se basa en una serie. Cuando los datos adjuntos binarios están codificados en base64, el tiempo de proceso adicional y la memoria son necesarios para realizar la transformación en dichos datos. Como resultado de ello, es posible que los datos adjuntos binarios codificados en base64 sean un tercio más grandes que la versión no codificada original del adjunto. En este caso, si esta parte más grande de datos adjuntos codificados se transporta en una carga de mensaje basada en una serie, el uso de la memoria necesario para transportar la parte de datos adjuntos binarios puede tener un tamaño de uso de la memoria tres veces mayor que el adjunto binario no codificado original en BytesMessage.
Procedimiento
Resultados
Se ha configurado que un cliente de servicio web utilice objetos TextMessage o BytesMessage cuando se utiliza el protocolo SOAP a través de JMS para transmitir mensajes de solicitud y respuesta.