Java JTA如何获取当前事务(JNDI?、ServiceLoader?)?注册同步

Java JTA如何获取当前事务(JNDI?、ServiceLoader?)?注册同步,java,jta,Java,Jta,我有一个小的自定义库,需要进行事务处理。 为了支持JTA,我想实现并发布一个同步(我想保持它的简单,因此没有XAResource) 1:我可以在完成之前抛出一个异常(OptimisticLocking)吗 但是,当我在线程中打开事务资源时,我需要在当前JTA事务中注册它。 起初,我认为使用TransactionSynchronizationRegistry可以做到这一点。 但这似乎是我应该用于事务本地数据的键值存储 2:TransactionSynchronizationRegistry是否用于

我有一个小的自定义库,需要进行事务处理。 为了支持JTA,我想实现并发布一个同步(我想保持它的简单,因此没有XAResource)

1:我可以在完成之前抛出一个异常(OptimisticLocking)吗

但是,当我在线程中打开事务资源时,我需要在当前JTA事务中注册它。 起初,我认为使用TransactionSynchronizationRegistry可以做到这一点。 但这似乎是我应该用于事务本地数据的键值存储

2:TransactionSynchronizationRegistry是否用于支持事务挂起/恢复

因此,为了注册我的同步,我需要JTA事务(或者可以给我当前事务的TransactionManager)。 根据JTA1.1的javadoc,没有JNDI查找来解决它,也没有关于使用java ServiceLoader的提示

3:这是否意味着解析当前事务依赖于提供程序


4:是否有标准的、独立于提供商的方式来解决当前事务?(如果没有,我将提供消费者接口并使用ServiceLoader基础设施解决其实现。因此,集成开发人员负责提供解决事务的方法)

您希望使用哪个JTA实现?我希望独立于任何JTA实现,如果可能的话,afaikjta主要由框架提供。对于Spring,请参见:-它似乎与实现无关,但在引入Spring的过程中需要权衡。