爲了避免XA開銷,我從前綴項目中的一些表名和滾出來是一樣的mysql數據庫是項目B的內部,所以我可以使用相同的連接 - 並希望得到全原子等多個會話工廠,一個連接?
A計劃和B雖然有非常不同的會話工廠配置。我爲項目B配置了HibernateTransactionManager,而A僅使用 TransactionSynchronizationManager.hasResource(sessionFactoryA) OSiV樣式代碼與事務一起使用。
這是否在工作原理?我剛剛在A中嘗試了一個斷點,然後等待,然後繼續,超時導致B回滾,但A仍然提交!!?
什麼給?謝謝你的幫助。
我意識到需要使用相同的連接....這讓我想到了,如何提供一個自定義的hibernate.current_session_context_class,它可以查找不同的sessionFactory來返回相同的連接? – adam 2010-01-20 17:20:58
好的。 hibernate.current_session_context_class不合適,但hibernate.connection.provider_class是!我可以實現這一點,並getConnection「返回staticSessionFactoryB.getCurrentSession()。連接();」 我的設置不需要內部事務等,並且默認的on_close會話的連接在tx結束,因此一切似乎都很好。我有一個真正的共享資源。請告訴我,如果你看到任何clangers!也許這是帕斯卡爾在下面提到的? – adam 2010-01-20 22:45:36