Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 事务回滚和web服务_Java_Web Services_Transactions_Ejb_Rollback - Fatal编程技术网

Java 事务回滚和web服务

Java 事务回滚和web服务,java,web-services,transactions,ejb,rollback,Java,Web Services,Transactions,Ejb,Rollback,给定一个从会话bean调用两个web服务方法的示例,如果在对两个方法的调用之间抛出异常会怎么样?在不调用web服务的情况下,事务将回滚,不会造成任何伤害。但是,web服务不会回滚。当然,即使只有一个web服务也存在问题。虽然这是一个一般性问题,但我对与EJB会话bean相关的解决方案感兴趣 一个简单且定制的答案是为每个“真正的功能”方法向web服务添加一个特殊的“回滚方法”。我所要求的是某种标准化的方法。许多技术正在发展,但问题仍然十分尖锐,标准化过程尚未为我们提供完全可移植的解决方案 选项一,

给定一个从会话bean调用两个web服务方法的示例,如果在对两个方法的调用之间抛出异常会怎么样?在不调用web服务的情况下,事务将回滚,不会造成任何伤害。但是,web服务不会回滚。当然,即使只有一个web服务也存在问题。虽然这是一个一般性问题,但我对与EJB会话bean相关的解决方案感兴趣


一个简单且定制的答案是为每个“真正的功能”方法向web服务添加一个特殊的“回滚方法”。我所要求的是某种标准化的方法。

许多技术正在发展,但问题仍然十分尖锐,标准化过程尚未为我们提供完全可移植的解决方案

选项一,您可以使web服务事务感知。当然,这假设您可以控制它们,尽管在某些情况下,为非事务性服务编写事务感知代理也是一种选择

WS-AT和WS-BA协议是事务性web服务的领先标准。不幸的是,它们只指定协议,而不指定语言绑定。换句话说,在编程语言级别没有标准API。对于Java来说,最近的东西是JSR-156,但它还没有准备好

然后问题就变成了:如何将EJB(即JTA/XA)事务绑定到WS-one。由于WS-AT和XA协议所使用的模型密切相关,这可以通过协议桥来实现。几个应用服务器单独提供了这些产品线。JBoss在JavaOne上展示了他们的产品-参见

注意,协议桥接技术也可以反过来使用,以允许使用(例如)XA数据库后端的EJB作为事务性web服务公开

但是,两阶段提交事务使用的锁定模型实际上只适用于同一控制域中的短期事务。如果您的服务在同一家公司的数据中心运行,您可能会侥幸逃脱。对于更广泛的分布,无论是地理分布还是管理分布,您可能希望了解WS-BA,这是一种专门为此类用途设计的web服务事务协议


WS-BA使用了一种更难编程的基于补偿的模型。它基本上基于您提到的技术:服务方法的效果通过调用补偿方法来撤消。这可能很棘手,但JBoss实习生做了一个相当不错的注释框架,允许您以最小的努力定义补偿方法,并让它们自动驱动。它不是标准化的,但如果您选择这种方法,则非常值得一试:

如我所知,在这种情况下使用了由Microsoft、BEA Systems和IBM开发的Web服务协调(WS-C)和Web服务事务(WS-T)规范。您可以从阅读IBM提供的文章开始,以明确这一点。

实际上,您通常不仅需要自定义回滚方法,还需要自定义提交方法。否则,您会遇到类似WS-BA标准中的问题

请查看详细的文章。这里提到的功能在。。。该产品还支持经典的“ACID”样式的web服务事务

家伙


免责声明:我为Atomikos工作

幸运的是,我们使用JBoss,所以我倾向于您提出的解决方案,尤其是最后一个链接。大家好,这个答案已经5年了,上面说“JSR-156还没有准备好。”。这个有更新吗??现在是否有一个标准来处理soap Web服务的事务?提前感谢您提供的任何一个链接。这并不奇怪,因为你在8年前发布了这篇文章:)