2012-01-24 31 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