即使您在後臺使用不同的實現方式,您也應該通過JTA管理事務。 (Hibernate,Webphere,Weblogic等)。理想情況下,它應該是這樣的:
<bean id="transactionImpl" class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean"/>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager ref="transactionImpl"/>
</bean>
如果你想使用Hibernate的事務管理器來代替,只需更換通過TransactionImp bean類轉換到休眠一個在你原來的問題。
至於哪位經理比較好,我實在想不出有什麼重要的理由可以選擇。我能想到的唯一情況是,如果您擁有共享負載的羣集應用程序服務器,而不僅僅是故障轉移,它可能會發揮作用。也許交易可以在他們之間共享?我不知道。如果有人能想到別的東西,請隨時糾正我。
編輯:看起來WebSphereTransactionManagerFactoryBean(就是我上面使用)並不需要使用的WebSphere 6.0及以上版本,並根據WebSphere Transaction Manager Spring Docs你應該使用WebSphereUowTransactionManager作爲直接替代JTA。因此,而不是原始示例中的Hibernate事務管理器,只需使用WebSphereUowTransactionManager類即可。 Spring將事務管理器從應用程序服務器的JNDI樹中抽取出來,因此您可能必須設置某個屬性來指定JNDI名稱。
從我所知道的情況來看,WebSphere事務管理器使您能夠執行事務掛起等操作。就我個人而言,我會去應用服務器的事務管理器,無論它是WebSphere還是Weblogic還是Glassfish或其他。
我已經閱讀了很多文獻。我正在尋找具有更具體經驗或文獻的人的答案。我也需要更好的幫助。也許Websphere Transaction服務器對於單個應用程序服務器應用程序來說是矯枉過正的?謝謝你們一樣。 – 2009-07-23 13:04:37
我從來沒有用過WebSphere,感謝上帝。你自己在那裏。我的看法是,最好使用爲您的應用服務器編寫的事務管理器。我使用WebLogic和JBOSS,這些決定了我的TX管理器。 – duffymo 2009-07-23 23:06:41