1

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

但是,我正在尝试将其连接到 HAWQ。HAWQ 是 XA 意识的,它基本上说,“哇,Nellie,我还没有做 XA。” 由于我可能会遇到具有类似限制的其他后备存储,因此确切的例外并不重要,我需要在通常的 XA 上下文中支持非 XA 数据存储的概念,在某些非常粗略的限制内。

该过程的结构使得 XA 是一种宝贵的奢侈品,但未在 XA 范围内捕获的事务故障是非关键的。

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

我已经回顾了如何排除一个方法是@Transactional?,但它正在解决一个不同的问题。

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

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


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

0 回答 0