如何使用Spring注释从XA事务中排除方法

时间:2016-09-20 15:31:21

标签: java spring transactions hawq

我有一个复杂的过程,设计为事务性的,并且被编码为使用Spring注释进行事务处理。当我针对具有XA感知驱动程序的数据库运行它时,它运行良好(除了设置每个RDBMS以支持XA的头痛)。

然而,我正试图将它与HAWQ挂钩。 HAWQ是XA意识到的,它本质上说,“哇哇哇哇,我还没做过XA。”由于我可能遇到具有类似限制的其他后备存储,因此确切的异常并不重要,只有我需要在某些非常粗略的限制内支持非XA数据存储的概念,通常是XA上下文。

流程的结构使XA成为一种宝贵的奢侈品,但XA范围内未捕获的事务性故障并不重要。

对于与HAWQ(或触及其他未来非XA系统的类)对话的类,有没有办法注释方法说“我知道调用者是事务性的,但我不是。”?

我已经审核了How to exclude a method to be @Transactional?,但它正在解决另一个问题。

class CallingClass
{
    @Transactional
    callingMethod ()
    {
        doSomeSetup ();
        methodFromWorkerClass();
    }
}

class NormalWorkerClass() implements Worker
{
    methodFromWorkerClass ()
    {
        doSomeStuff();
    }
}


class NonXAClass() implements Worker
{
    @INeedToBeNonXA
    methodFromWorkerClass ()
    {
        doSomeStuff();
    }
}

0 个答案:

没有答案