2010-03-16 216 views
0

我们有一些使用各种形式的Web服务进行通信的产品。有些使用通过http请求传递的直接XML(HttpClient)。其他人进行远程EJB调用,有些人使用EJB会话Bean方法上的EJB 3 Web服务。在HttpClient版本中,我们遇到了远程端需要10多分钟才能完成数据库操作并且调用者超时的问题。调用者在那时不知道数据是否在远端进行。有时我们会留下插入在远程端的数据,但由于无法确定状态,呼叫方超时并回滚。EJB Web服务交易

据我所知,将这两者分离并在诸如JMS之间放置消息传递层将允许我们保证交付并且不会阻止,但是之后我们必须编写大量额外的代码来检查是否交易在远端完成或失败。这绝对是一种选择,但是有没有什么好的解决方案可以在两端之间进行握手的情况下进行写入,在这种情况下,无论是由于异常,超时还是网络问题导致整个事务失败,以及在哪里结束两个应用程序之间的交互都将确定整个交易是成功还是失败?是否是此远程EJB sessionbean方法调用的唯一/最佳选项?

回答

2

听起来像你需要一个WS-AT实现。阅读讨论Transaction rollback and web services

+0

感谢您的信息,看起来像我们可以真正使用的东西。 – 2010-03-17 22:27:11