Utilice la propiedad enableTransactionalOneWay para garantizar que las solicitudes del servicio web asíncronas unidireccionales y bidireccionales que utilizan el transporte SOAP sobre JMS estándar del sector se envíen a la cola o tema de destino de forma transaccional.
Acerca de esta tarea
Cuando utiliza JMS para transportar solicitudes de servicio web JAX-WS (API de Java™ para servicios web basados en XML) o JAX-RPC (API de Java para RPC basado en XML), el comportamiento predeterminado es que el mensaje SOAP se añada a la cola o tema de destino ni de manera transaccional ni fuera de la transacción de la aplicación cliente.
La inclusión
del mensaje SOAP en la cola o tema de destino se realiza fuera de la transacción
para impedir los problemas de sincronización que pueden producirse con las solicitudes de
servicio web bidireccionales síncronas. No obstante, puede optar por habilitar solicitudes asíncronas unidireccionales o bidireccionales, que se procesarán como parte de una transacción. Puede utilizar la propiedad enableTransactionalOneWay para asegurarse de que las solicitudes de servicios web asíncronas unidireccionales y bidireccionales que utilizan el transporte SOAP sobre JMS se envíen a la cola o tema de destino de forma transaccional. Cuando la aplicación cliente
invoca la solicitud de servicio web, el mensaje de solicitud SOAP
generado se añade a la cola o tema de destino como parte de la transacción
de la aplicación cliente.
Utilice uno de los métodos siguientes
para habilitar la propiedad enableTransactionalOneWay.
Procedimiento
- Consulte la propiedad enableTransactionalOneWay de forma programada. El valor de la propiedad es un valor booleano.
- Para los clientes JAX-WS, establezca la propiedad en el objeto RequestContext del cliente JAX-WS.
Por ejemplo:
((BindingProvider) port).getRequestContext().put
(com.ibm.websphere.webservices.Constants.ENABLE_TRAN_ONEWAY,
new Boolean(true));
- Para los clientes JAX-RPC, establezca la propiedad en el objeto Stub o
Call de JAX-RPC. Por ejemplo:
stub._setProperty(com.ibm.websphere.webservices.Constants.ENABLE_TRAN_ONEWAY,
new Boolean(true));
- Para los clientes JAX-RPC, establezca la propiedad enableTransactionalOneWay como
una propiedad personalizada en el archivo de descriptores de despliegue
ibm-webservicesclient-bnd.xmi utilizando el mandato wsadmin.
Para obtener más información sobre las opciones de la herramienta wsadmin, consulte las opciones de la información de mandatos install, installInteractive, edit,
editInteractive, update y updateInteractive del objeto AdminApp.
Utilice el objeto $AdminApp junto con la opción -WebServicesClientCustomProperty
para establecer el valor de la propiedad en el archivo de enlaces cliente, ibm-webservicesclient-bnd.xmi.
El valor de la propiedad personalizada, enableTransactionalOneWay, es true o false.
- Utilizando
Jacl:
$AdminApp edit MyApplication {-WebServicesClientCustomProperty
{{MyEJBJar.jar MyEJB service/MyServiceRef MyPort enableTransactionalOneWay
true}}}
- En Jython:
AdminApp.edit('MyApplication', ['-WebServicesClientCustomProperty',
[['MyEJBJar.jar', 'MyEJB', 'service/MyServiceRef ', 'MyPort', 'enableTransactionalOneWay',
'true']]])
Resultados
Tiene una aplicación cliente de servicios web que se ha configurado para invocar solicitudes asíncronas unidireccionales y bidireccionales de manera transaccional cuando utilizan el transporte JMS.
Qué hacer a continuación
Después de haber habilitado la propiedad
enableTransactionalOneWay,
ejecute la aplicación cliente.