我们尝试编写一个应该支持本地事务的JCA适配器。 我们希望使用最后一个代理优化来将我们的连接器放在与XADataSource相同的事务中。
根据规范,LocalTransactions.commit
应该抛出LocalTransactionException
来指示提交期间的错误,并且它应该导致回滚XA事务。
但是,这不会发生。我们只看到server.log中的一些堆栈跟踪,并且事务仍处于准备状态(并挂起)。
我们调试了调用,而glassfish实际上执行了最后一次代理优化,但ConnectorXAResource.commit
(调用它)将LocalTransactionException
转换为不会导致回滚的异常。
有任何解决此问题的建议吗?