2011-07-18 33 views
3

是否有可能通过JTA创建任何类型的自定义资源transactioal?我们假设一个基本示例,并创建一个文件夹,以便在发生错误时回滚。与JTA一起使用任意资源

可以处理这样的自定义资源吗?

回答

9

是的。该资源需要提供XAResource的实现,并且在使用该资源时该实现的实例需要为enlisted with the transaction。资源可以get the current transaction from the transaction manager为了执行注册时,它被访问(我认为)。

您可以查看XADisk的代码,该代码显然是XA事务性文件管理器,以了解它在此处的工作方式。但是,在J2EE世界中执行此操作的常见方法不是直接处理JTA,而是使用JCA编写资源适配器,它使J2EE容器不仅能处理事务,还能处理池,命名和各种操作其他企业细节。然而,JCA API并不完全直截了当,而且尽管困难重重,它还是被一大堆更加困难的文档所捍卫,其主要目的似乎是为了防止对它的理解!

+0

当使用Springs TransactionSynchronizationManager时,是否有类似XAResource的机会? – Erik

+0

不知道。我不做Spring。 J2EE已经处理了这个,所以我不明白为什么Spring需要在这里介入。 –