La propriété enableTransactionalOneWay permet de s'assurer que des demandes asynchrones unidirectionnelles et bidirectionnelles de services Web utilisant le transport SOAP sur JMS de norme industrielle seront envoyées vers la file d'attente ou la rubrique de destination en mode transactionnel.
Pourquoi et quand exécuter cette tâche
Si vous utilisez JMS pour transporter des demandes de services Web JAX-WS (Java™ API
for XML Web Services) ou JAX-RPC (Java API for XML-based RPC), le comportement par défaut consiste à ce que le message SOAP soit ajouté à la file d'attente ou à la rubrique de destination en mode non transactionnelle ou en-dehors de la transaction de l'application du client.
L'ajout du message SOAP à la file d'attente ou à la rubrique de destination s'effectue en dehors de la transaction afin d'éviter tout problème de synchronisation susceptible de se produire avec des demandes de service Web synchrones bidirectionnelles. Cependant, vous pouvez choisir d'autoriser le traitement de demandes unidirectionnelles et bidirectionnelles dans le cadre d'une transaction. La propriété enableTransactionalOneWay vous permet de vous assurer que des demandes asynchrones unidirectionnelles et bidirectionnelles de services Web utilisant le transport JMS sont envoyées en mode transactionnel vers la file d'attente ou la rubrique de destination. Lorsque l'application client appelle la demande de service Web, le message de la demande SOAP résultant s'ajoute à la file d'attente ou à la rubrique de destination dans le cadre de la transaction de l'application client.
Utilisez l'une des méthodes suivantes pour activer la propriété enableTransactionalOneWay.
Procédure
- Définissez la propriété enableTransactionalOneWay à l'aide d'un programme. La valeur de la propriété est de type Booléen.
- Pour des clients JAX-WS, définissez la propriété sur l'objet RequestContext JAX-WS du client.
Par
exemple :
((BindingProvider) port).getRequestContext().put
(com.ibm.websphere.webservices.Constants.ENABLE_TRAN_ONEWAY,
new Boolean(true));
- Pour des clients JAX-RPC, définissez la propriété sur l'objet Stub ou Call JAX-RPC du client. Par
exemple :
stub._setProperty(com.ibm.websphere.webservices.Constants.ENABLE_TRAN_ONEWAY,
new Boolean(true));
- Pour des clients JAX-RPC, définissez la propriété enableTransactionalOneWay comme une propriété personnalisée dans le fichier ibm-webservicesclient-bnd.xmi du descripteur de déploiement à l'aide de la commande wsadmin.
Pour plus d'informations sur les options de l'outil wsadmin, voir Options des commandes install, installInteractive, edit, editInteractive, update et updateInteractive de l'objet AdminApp.
Utilisez l'objet $AdminApp avec l'option -WebServicesClientCustomProperty pour définir la valeur de la propriété dans le fichier de liaison client, ibm-webservicesclient-bnd.xmi.
La valeur de la propriété personnalisée enableTransactionalOneWay est true ou false.
- Langage Jacl :
$AdminApp edit MyApplication {-WebServicesClientCustomProperty
{{MyEJBJar.jar MyEJB service/MyServiceRef MyPort enableTransactionalOneWay
true}}}
- En langage
Jython :
AdminApp.edit('MyApplication', ['-WebServicesClientCustomProperty',
[['MyEJBJar.jar', 'MyEJB', 'service/MyServiceRef ', 'MyPort', 'enableTransactionalOneWay',
'true']]])
Résultats
Vous disposez d'une application client de services Web configurée pour appeler des demandes asynchrones unidirectionnelles et bidirectionnelles en mode transactionnel lorsqu'un transport JMS est utilisé.
Que faire ensuite
Une fois la propriété
enableTransactionalOneWay activée, exécutez l'application.