2012-01-24 32 views
2

我们有一个典型的情况。组件集成的春季交易策略

两个Java服务组件正在并行开发。

可以说A和B.A是从队列中拾取消息并执行一些业务规则处理的JMS应用程序。 A使用B作为数据库持久性。 B执行所有数据库操作。

所以,这意味着B的方法总是从A中调用。 A使用WebsphereUowTransactionManager(JtaTransactionManager的服务器特定子类)开发,而B使用JpaTransactionManager。 A使用程序化事务模型(是的,我们需要它),而B使用声明性模型(@Transaction注释)。两者都是使用独立的bean配置开发的。

现在,在集成中,我们正面临事务异常。我认为这是由于A和B的交易模型之间的不匹配造成的。理论上,B将使用A的程序化交易背景。这使得B的陈述模型变得冗余。

所以,问题是,什么应该是正确的组合交易策略来整合A和B?

我的理解 - A使用编程事务,所以B也必须使用编程模型。

+0

这两个事务管理器之间没有适配器吗? – belgther

+0

什么样的适配器?你能解释一下吗? –

回答

0

我会添加一些调解组件,以便A和B之间的所有交互都将通过单个服务(统一的TX管理策略)。 BTW:你可以使用JmsTransactionManager for A.更多关于Spring TX管理的问题here