Use a propriedade enableTransactionalOneWay para garantir que as solicitações de serviço da Web assíncronos unidirecionais e bidirecionais que usam o transporte SOAP sobre JMS padrão de mercado serão enviados para a fila de destinos ou tópico de maneira transacional.
Sobre Esta Tarefa
Ao usar o JMS para transportar pedidos de serviço da Web Java™ API for XML Web Services (JAX-WS) ou Java API for XML-based RPC (JAX-RPC), o comportamento padrão é para a mensagem SOAP ser incluída na fila de destino ou tópico de maneira não transacional ou fora da transação do aplicativo cliente.
A inclusão da mensagem SOAP na fila de destino ou tópico é feita fora da transação para evitar problemas de sincronização que podem ocorrer com pedidos de serviço da Web síncronos bidirecionais. Entretanto, é possível permitir que pedidos assíncronos uni e
bidirecionais sejam processados como parte de uma transação. É possível usar a propriedade enableTransactionalOneWay para garantir que os pedidos de serviço da Web assíncronos unidirecionais e bidirecionais que usam o transporte JMS serão enviados para a fila de destinos ou tópico de maneira transacional. Quando o aplicativo cliente chama o pedido de serviço da Web, a mensagem do pedido SOAP resultante é incluída na fila ou tópico de destino como parte da transação do aplicativo cliente.
Utilize uma das seguintes maneiras
para ativar a propriedade enableTransactionalOneWay.
Procedimento
- Configure a propriedade enableTransactionalOneWay programaticamente. O valor da propriedade é um Booleano.
- Para clientes JAX-WS, configure a propriedade no objeto RequestContext JAX-WS do cliente.
Por exemplo:
((BindingProvider) port).getRequestContext().put
(com.ibm.websphere.webservices.Constants.ENABLE_TRAN_ONEWAY,
new Boolean(true));
- Para clientes JAX-RPC, configure a propriedade no objeto de Call ou Stub JAX-RPC do cliente. Por exemplo:
stub._setProperty(com.ibm.websphere.webservices.Constants.ENABLE_TRAN_ONEWAY,
new Boolean(true));
- Para clientes JAX-RPC, configure a propriedade enableTransactionalOneWay
como uma propriedade customizada no arquivo do descritor de implementação
ibm-webservicesclient-bnd.xmi, utilizando o comando wsadmin.
Para obter mais informações sobre as opções da ferramenta wsadmin, consulte as opções para obter informações dos comandos
AdminApp object install, installInteractive, edit, editInteractive, update e updateInteractive.
Utilize
o objeto $AdminApp juntamente com a opção -WebServicesClientCustomProperty
para configurar o valor da propriedade dentro do arquivo de ligação do cliente, ibm-webservicesclient-bnd.xmi.
O valor da propriedade customizada, enableTransactionalOneWay,
é true ou false.
- Utilizando
Jacl:
$AdminApp edit MyApplication {-WebServicesClientCustomProperty
{{MyEJBJar.jar MyEJB service/MyServiceRef MyPort enableTransactionalOneWay
true}}}
- Utilizando Jython:
AdminApp.edit('MyApplication', ['-WebServicesClientCustomProperty',
[['MyEJBJar.jar', 'MyEJB', 'service/MyServiceRef ', 'MyPort', 'enableTransactionalOneWay',
'true']]])
Resultados
Você tem um aplicativo cliente de serviço da Web que está configurado para chamar pedidos assíncronos unidirecionais e bidirecionais de maneira transacional ao usar o transporte JMS.
O que Fazer Depois
Depois de ter ativado a propriedade
enableTransactionalOneWay,
execute o aplicativo cliente.