2010-03-16 5 views
0

Nous avons quelques produits qui communiquent en utilisant diverses formes de services Web. Certains utilisent un langage XML direct transmis via des requêtes http (HttpClient). D'autres effectuent des appels EJB à distance et certains utilisent les services Web EJB 3 sur les méthodes de bean session EJB. Dans les versions HttpClient, nous avons des problèmes où l'extrémité distante prend plus de 10 minutes pour terminer une opération de base de données et l'appelant expire. L'appelant ne sait pas à ce moment-là si les données l'ont ou non fait sur l'extrémité distante. Parfois, il nous restera des données insérées à l'extrémité distante mais l'appelant expire et revient en arrière car il ne peut pas être sûr de l'état. Je comprends que découpler ces deux et mettre une couche de messagerie comme JMS entre les deux nous permettrait de garantir la livraison et de ne pas bloquer, mais alors nous aurions à écrire beaucoup de code supplémentaire pour vérifier si oui ou non la transaction l'a fait ou a échoué sur l'extrémité distante. C'est certainement une option, mais y a-t-il de bonnes solutions pour écrire là où il y a une poignée de main entre les deux extrémités, où la transaction échouera, que ce soit à cause d'une exception, d'un timeout ou d'un problème de réseau? interaction entre les deux applications à la fois saura à coup sûr si la transaction dans son ensemble a réussi ou échoué? Est la seule/meilleure option pour ces appels de méthode EJB sessionbean à distance?Transactions de services Web EJB

Répondre

2

Il semble que vous ayez besoin d'une implémentation WS-AT. Lire la discussion à Transaction rollback and web services

+0

Merci pour l'info, qui ressemble à quelque chose que nous pourrions vraiment utiliser. –