SpringBoot2的JTA怎么使用

這篇文章主要講解了“Spring Boot2的JTA怎么使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Spring Boot2的JTA怎么使用”吧!

創(chuàng)新互聯(lián)公司成立于2013年,先為前進(jìn)等服務(wù)建站,前進(jìn)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為前進(jìn)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

使用JTA處理分布式事務(wù)

Spring Boot通過(guò)Atomkos或Bitronix的內(nèi)嵌事務(wù)管理器支持跨多個(gè)XA資源的分布式JTA事務(wù),當(dāng)部署到恰當(dāng)?shù)腏2EE應(yīng)用服務(wù)器時(shí)也會(huì)支持JTA事務(wù)。

當(dāng)發(fā)現(xiàn)JTA環(huán)境時(shí),Spring Boot將使用Spring的JtaTransactionManager來(lái)管理事務(wù)。自動(dòng)配置的JMS,DataSource和JPA beans將被升級(jí)以支持XA事務(wù)。你可以使用標(biāo)準(zhǔn)的Spring idioms,比如@Transactional,來(lái)參與到一個(gè)分布式事務(wù)中。如果處于JTA環(huán)境,但仍想使用本地事務(wù),你可以將spring.jta.enabled屬性設(shè)置為false來(lái)禁用JTA自動(dòng)配置功能。

使用Atomikos事務(wù)管理器

Atomikos是一個(gè)非常流行的開(kāi)源事務(wù)管理器,并且可以嵌入到你的Spring Boot應(yīng)用中。你可以使用spring-boot-starter-jta-atomikosStarter去獲取正確的Atomikos庫(kù)。Spring Boot會(huì)自動(dòng)配置Atomikos,并將合適的depends-on應(yīng)用到你的Spring Beans上,確保它們以正確的順序啟動(dòng)和關(guān)閉。

默認(rèn)情況下,Atomikos事務(wù)日志將被記錄在應(yīng)用home目錄(你的應(yīng)用jar文件放置的目錄)下的transaction-logs文件夾中。你可以在application.properties文件中通過(guò)設(shè)置spring.jta.log-dir屬性來(lái)定義該目錄,以spring.jta.atomikos.properties開(kāi)頭的屬性能用來(lái)定義Atomikos的UserTransactionServiceIml實(shí)現(xiàn),具體參考AtomikosProperties javadoc。

注意

為了確保多個(gè)事務(wù)管理器能夠安全地和相應(yīng)的資源管理器配合,每個(gè)Atomikos實(shí)例必須設(shè)置一個(gè)唯一的ID。默認(rèn)情況下,該ID是Atomikos實(shí)例運(yùn)行的機(jī)器上的IP地址。為了確保生產(chǎn)環(huán)境中該ID的唯一性,你需要為應(yīng)用的每個(gè)實(shí)例設(shè)置不同的spring.jta.transaction-manager-id屬性值。

使用Bitronix事務(wù)管理器

Bitronix是一個(gè)流行的開(kāi)源JTA事務(wù)管理器實(shí)現(xiàn),你可以使用spring-boot-starter-jta-bitronixstarter為項(xiàng)目添加合適的Birtronix依賴(lài)。和Atomikos類(lèi)似,Spring Boot將自動(dòng)配置Bitronix,并對(duì)beans進(jìn)行后處理(post-process)以確保它們以正確的順序啟動(dòng)和關(guān)閉。

默認(rèn)情況下,Bitronix事務(wù)日志(part1.btm和part2.btm)將被記錄到應(yīng)用home目錄下的transaction-logs文件夾中,你可以通過(guò)設(shè)置spring.jta.log-dir屬性來(lái)自定義該目錄。以spring.jta.bitronix.properties開(kāi)頭的屬性將被綁定到bitronix.tm.Configuration bean,你可以通過(guò)這完成進(jìn)一步的自定義,具體參考Bitronix文檔。

注意

為了確保多個(gè)事務(wù)管理器能夠安全地和相應(yīng)的資源管理器配合,每個(gè)Bitronix實(shí)例必須設(shè)置一個(gè)唯一的ID。默認(rèn)情況下,該ID是Bitronix實(shí)例運(yùn)行的機(jī)器上的IP地址。為了確保生產(chǎn)環(huán)境中該ID的唯一性,你需要為應(yīng)用的每個(gè)實(shí)例設(shè)置不同的spring.jta.transaction-manager-id屬性值。

使用Narayana事務(wù)管理器

Narayana是一個(gè)流行的開(kāi)源JTA事務(wù)管理器實(shí)現(xiàn),目前只有JBoss支持。你可以使用spring-boot-starter-jta-narayana starter添加合適的Narayana依賴(lài),像Atomikos和Bitronix那樣,Spring Boot將自動(dòng)配置Narayana,并對(duì)你的beans后處理(post-process)以確保正確啟動(dòng)和關(guān)閉。

Narayana事務(wù)日志默認(rèn)記錄到應(yīng)用home目錄(放置應(yīng)用jar的目錄)的transaction-logs目錄下,你可以通過(guò)設(shè)置application.properties中的spring.jta.log-dir屬性自定義該目錄。以spring.jta.narayana.properties開(kāi)頭的屬性可用于自定義Narayana配置,具體參考NarayanaProperties。

注意

為了確保多事務(wù)管理器能夠安全配合相應(yīng)資源管理器,每個(gè)Narayana實(shí)例必須配置唯一的ID,默認(rèn)ID設(shè)為1。為確保生產(chǎn)環(huán)境中ID唯一性,你可以為應(yīng)用的每個(gè)實(shí)例配置不同的spring.jta.transaction-manager-id屬性值。

使用J2EE管理的事務(wù)管理器

如果你將Spring Boot應(yīng)用打包為一個(gè)war或ear文件,并將它部署到一個(gè)J2EE的應(yīng)用服務(wù)器中,那你就能使用應(yīng)用服務(wù)器內(nèi)建的事務(wù)管理器。Spring Boot將嘗試通過(guò)查找常見(jiàn)的JNDI路徑(java:comp/UserTransaction, java:comp/TransactionManager等)來(lái)自動(dòng)配置一個(gè)事務(wù)管理器。如果使用應(yīng)用服務(wù)器提供的事務(wù)服務(wù),你通常需要確保所有的資源都被應(yīng)用服務(wù)器管理,并通過(guò)JNDI暴露出去。Spring Boot通過(guò)查找JNDI路徑j(luò)ava:/JmsXA或java:/XAConnectionFactory獲取一個(gè)ConnectionFactory來(lái)自動(dòng)配置JMS,并且你可以使用spring.datasource.jndi-name屬性配置你的DataSource。

混合XA和non-XA的JMS連接

當(dāng)使用JTA時(shí),primary JMS ConnectionFactorybean將能識(shí)別XA,并參與到分布式事務(wù)中。有些情況下,你可能需要使用non-XA的ConnectionFactory去處理一些JMS消息。例如,你的JMS處理邏輯可能比XA超時(shí)時(shí)間長(zhǎng)。

如果想使用一個(gè)non-XA的ConnectionFactory,你可以注入nonXaJmsConnectionFactory bean而不是@Primary jmsConnectionFactory bean。為了保持一致,jmsConnectionFactory bean將以別名xaJmsConnectionFactor來(lái)被使用。

示例如下:

 1// Inject the primary (XA aware) ConnectionFactory
2@Autowired
3private ConnectionFactory defaultConnectionFactory;
4// Inject the XA aware ConnectionFactory (uses the alias and injects the same as above)
5@Autowired
6@Qualifier("xaJmsConnectionFactory")
7private ConnectionFactory xaConnectionFactory;
8// Inject the non-XA aware ConnectionFactory
9@Autowired
10@Qualifier("nonXaJmsConnectionFactory")
11private ConnectionFactory nonXaConnectionFactory;

支持可替代的內(nèi)嵌事務(wù)管理器

XAConnectionFactoryWrapper和XADataSourceWrapper接口用于支持可替換的內(nèi)嵌事務(wù)管理器。該接口用于包裝XAConnectionFactory和XADataSource beans,并將它們暴露為普通的ConnectionFactory和DataSource beans,這樣在分布式事務(wù)中可以透明使用。Spring Boot將使用注冊(cè)到ApplicationContext的合適的XA包裝器及JtaTransactionManager bean自動(dòng)配置你的DataSource和JMS。

BitronixXAConnectionFactoryWrapper和BitronixXADataSourceWrapper提供很好的示例用于演示怎么編寫(xiě)XA包裝器。

感謝各位的閱讀,以上就是“Spring Boot2的JTA怎么使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Spring Boot2的JTA怎么使用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)站題目:SpringBoot2的JTA怎么使用
文章地址:http://muchs.cn/article22/ijsocc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、做網(wǎng)站響應(yīng)式網(wǎng)站、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)