?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
一般來說,Spring的事務(wù)抽象與應(yīng)用服務(wù)器是無關(guān)的。此外,使用Spring的 JtaTransactionManager
類時,
一種可選的方式是通過JNDI查詢獲得JTA UserTransaction
和 TransactionManager
對象,
其中后者可以被設(shè)置為自動探測,這時針對不同的應(yīng)用服務(wù)器有不同的方式。能夠直接訪問 TransactionManager
,
確實在很大程度上增強了事務(wù)語義,可以參考 JtaTransactionManager
類的javadoc獲得更多細(xì)節(jié)。
當(dāng)在J2EE應(yīng)用服務(wù)器上運行時,Spring的JtaTransactionManager
是一個標(biāo)準(zhǔn)的選擇,它在已知的所有通用服務(wù)器上都能正常工作。
它的一些諸如事務(wù)掛起等高級功能也可以在無須特殊配置的情況下在已知的許多服務(wù)器上工作(包括 GlassFish、JBoss、Geronimo和Oracle OC4J),
然而,為了完全支持事務(wù)掛起等高級功能,Spring為IBM WebSphere 、BEA WebLogic以及Oracle OC4J提供了特殊支持。我們會在后面的章節(jié)中討論這個話題.
在標(biāo)準(zhǔn)的場景中,包括 WebLogic、WebSphere和OC4J,請考慮簡單的使用'<tx:jta-transaction-manager/>'
配置元素。
它會自動檢測底層所使用的服務(wù)器以此來選擇最合適的事務(wù)管理器。
這意味著你不需要顯式的為服務(wù)器配置特殊的適配器(就像在后面的部分討論的那樣),選擇會自動完成,
并且如果找不到的話會啟用標(biāo)準(zhǔn)的 JtaTransactionManager
來管理。
在WebSphere 6.0以及后續(xù)版本中,推薦使用的Spring JTA 事務(wù)管理器是WebSphereUowTransactionManager
。
這個適配器充分利用了WebSphere應(yīng)用服務(wù)器 (6.0.2.19 以及更高的版本和6.1.0.9以及更高的版本)中提供的 UOWManager
API。
通過使用這個適配器,Spring驅(qū)動的事務(wù)掛起(PROPAGATION_REQUIRES_NEW
發(fā)起的掛起/恢復(fù))得到了IBM的官方支持。
在WebSphere 5.1環(huán)境下,你可以使用Spring的 WebSphereTransactionManagerFactoryBean
類。
這是一個工廠類,通過WebSphere的 靜態(tài)
訪問方法獲取到JTA TransactionManager
實例。
一旦通過工廠bean獲取到JTA TransactionManager
實例,
就可以使用該實例裝配一個Spring的 JtaTransactionManager
bean,
它封裝了JTA UserTransaction
,提供增強的事務(wù)語義。請參考相關(guān)javadoc以獲得完整信息。
請注意WebSphereTransactionManagerFactoryBean
雖然可以在WAS 5.1和6.0上正常工作,但是并沒有得到官方的正式支持。
如果需要運行在WAS6.0或者更高的版本上,請參考上面的WebSphereUowTransactionManager
部分。
在一個使用WebLogic 8.1或更高版本的環(huán)境中,你一般會優(yōu)先選用特定于WebLogic的 WebLogicJtaTransactionManager
類。
來取代JtaTransactionManager
類。在WebLogic環(huán)境中,該類提供了對Spring事務(wù)定義的完全支持,超過了標(biāo)準(zhǔn)的JTA語義。
它的特性包括:支持事務(wù)名,支持為每個事務(wù)定義隔離級別,以及在任何環(huán)境下正確地恢復(fù)事務(wù)的能力。
Spring為OC4J 10.1.3以及更高的版本提供了一個特殊的適配器:
OC4JJtaTransactionManager
。這個適配器跟前面的WebLogicJtaTransactionManager
很類似,
在OC4J上提供類似的輔助功能:事務(wù)名稱和針對每個事務(wù)不同的獨立等級。
請注意所有的 JTA 功能,包括事務(wù)掛起,都可以很好的通過Spring的 JtaTransactionManager
在 OC4J 工作。
特殊的OC4JJtaTransactionManager
提供了比標(biāo)準(zhǔn)JTA更多的超值功能。