Configuración de una cola de respuestas permanente para los servicios web con SOAP en JMS
Cuando se utilizan las comunicaciones de servicios web bidireccionales mediante el protocolo estándar del sector SOAP sobre JMS, puede beneficiarse de la configuración de una cola de respuestas permanente en un cliente de servicios web JAX-WS (API de Java™ para servicios web XML) o JAX-RPC (API de Java para RPC basado en XML). El uso de una cola de respuestas permanente puede mejorar el rendimiento, ya que esta cola de respuestas evita que el cliente tenga que crear una cola de respuestas temporal cada vez que se invoque una solicitud de servicios web.
Acerca de esta tarea
- Especifique la propiedad opcional replyToName en el URL de punto final de JMS.
- Establezca la cola de respuestas de forma programada.
- Para un cliente de servicios web JAX-WS, establezca el nombre JNDI de la cola de respuesta de forma programada en el objeto RequestContext del cliente. Al establecer el nombre JNDI de la cola de respuestas en el objeto RequestContext resultarán afectadas todas las solicitudes posteriores que se invocan mediante el objeto RequestContext.
- Para un cliente de servicios web JAX-WS, establezca el nombre JNDI de la cola de respuesta de forma programada en el objeto Stub o Call del cliente. Al establecer el nombre JNDI de la cola de respuestas como una propiedad Stub o Call resultarán afectadas todas las solicitudes posteriores que se invoquen utilizando dicho objeto Stub o Call.
- Establezca la cola de respuestas como propiedad del sistema JVM (Java Virtual Machine). Al establecer la cola de respuestas como una propiedad del sistema JVM, resultan afectados todos los clientes de servicios web que se ejecutan en una JVM concreta. Si hay varios clientes que se ejecutan en la misma JVM que necesitan utilizar una cola de respuestas distinta, esta opción no funcionará. En su lugar, utilice cualquiera de las otras dos opciones.
Para establecer la cola de respuestas permanente utilizando cualquiera de estas opciones, es necesaria una configuración sólo del lado del cliente. No es necesaria una configuración específica para el proveedor de servicios web.
Utilice las funciones administrativas típicas del proveedor de mensajes JMS para crear la cola de respuesta permanente antes de configurar la cola de respuestas con el cliente de servicios web.
Procedimiento
- Especifique la propiedad replyToName opcional en el URL de punto final de JMS; por ejemplo:
jms:jndi:jms/MyRequestQueue&jndiConnectionFactoryName=jms/MyCF&replyToName=jms/MyReplyQueue
- Establezca la cola de respuestas de forma programada en el cliente El valor de la propiedad es de tipo String y representa un nombre JNDI de la cola de respuestas.
- Para los clientes de servicios web JAX-WS, establezca la propiedad com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME en el objeto RequestContext JAX-RPC del cliente; por ejemplo:
((BindingProvider) port).getRequestContext().put (com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME, "jms/MyReplyQueue");
- Para los clientes de servicios web JAX-RPC, establezca la propiedad com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME en el objeto Stub o Call JAX-RPC del cliente; por ejemplo:
((javax.xml.rpc.Stub) stub)._setProperty(com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME, "jms/MyReplyQueue");
- Para los clientes de servicios web JAX-WS, establezca la propiedad com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME en el objeto RequestContext JAX-RPC del cliente; por ejemplo:
- Establezca el nombre JNDI de la cola de respuestas como una propiedad del sistema JVM.
- Para una invocación de cliente de Java, especifique el código siguiente en un indicador de mandatos:
java -Dcom.ibm.websphere.webservices.JMSReplyQueueJndiName=jms/MyReplyQueue
- Para una JVM que se ejecuta en el servidor de aplicaciones, realice las acciones siguientes:
Establezca una propiedad del sistema JVM con la consola administrativa para el servidor de aplicaciones que ejecuta la aplicación cliente de servicio web.
Para establecer las propiedades personalizadas, inicie la sesión en la consola administrativa y vaya al panel de propiedades personalizadas de Java Virtual Machine.
- Pulse
- Establezca la propiedad Name en: com.ibm.websphere.webservices.JMSReplyQueueJndiName
- Establezca la propiedad Value en: jms/Permanent_Q
- Pulse Aceptar para guardar los cambios.
- Pulse Sincronizar cambios con nodos y, a continuación, Guardar.
- Reinicie el servidor de aplicaciones.
- Para una invocación de cliente de Java, especifique el código siguiente en un indicador de mandatos:
Resultados
El cliente de servicios web puede recibir ahora mensajes SOAP sobre JMS de una cola de respuestas permanente.