我们有一个J2SE应用程序(我们将其部署为一个独立的JAR),它是一个支持Jetty的Web服务,它使用JPA(EclipseLink)和JTA(Bitronix,UserTransaction)。您可以猜到,此应用程序的主要目的是接收REST请求,处理,存储并向http客户端提供数据。
在处理请求时,有时我们会在fs上生成文件。遗憾的是,此过程超出了我们的JTA配置范围。我有一个任务将文件生成绑定到JTA事务,例如。在utx.rollback()我必须回滚文件处理,并在成功完成utx.commit()后,我也必须提交fs更改。
我的大四学生建议我使用XADisk(http://xadisk.java.net/)。似乎非常有前途!我做了一些示例 - 阅读,但我仍然有点困惑如何将此引入我们的应用程序。 所以我的问题是:任何人都可以提供一些关于如何将这个lib实现到JTA应用程序的指南吗?谢谢!
答案 0 :(得分:1)
答案 1 :(得分:-1)
我使用过XaDisk,我对回滚管理感到非常失望。
见doc:
当事务无法继续工作并且处于不一致的不完整状态时,抛出此异常是一个未经检查的异常。也就是说,事务没有提交或回滚,并且需要管理干预来解决不一致,然后将事务标记为完成。在例行XADisk操作期间或XADisk的恢复阶段,事务可能会失败。对于例程情况,事务将保持锁定(内存中)文件/目录,直到标记为完成。
这意味着这个lib实际上没有做任何事情来反转已经创建/删除的内容等等......
相当无用