国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JDBC分布式事務淺析

開發(fā) 后端 分布式
本文向您介紹JDB分布式事務,作者首先介紹J2EE平臺的數據源的整體構,由此逐層剖析JDBC的分布式事務。

在沒有開始JDBC分布式事務前,先來回顧一下J2EE平臺的數據源的整體構加:

在上面的介紹中,可能大家會過于限入理解如何實現(xiàn)ConnectionPoolDataSource和PooledConnection,而忘記了它的整體結構.為了幫助大家更快地理解,我從以下幾點進行總結.

聲明:本文完全是作者根據SUN的文檔從實踐中總結,沒有參考(事實上目前我還沒有找到這方面的參考)任何文章:

1.DataSource和ConnectionPoolDataSource的關系:

Sun的文檔中只對ConnectionPoolDataSource接口作了一般性規(guī)定,說明它是PooledConnection的工廠,即ConnectionPoolDataSource是傳統(tǒng)的連結池角色,它負責產生物理連結PooledConnection.而PooledConnection又是Connectio的工廠,一個PooledConnection對象負責產生多個Connection對象供應用程序調用.

而DataSource是對上面兩個過程的包裝,在DataSource中不僅要實現(xiàn)傳統(tǒng)連結池ConnectionPoolDataSource來產生物理連結PooledConnection,還要實現(xiàn)通過每個PooledConnection工廠來產生Connection,最后DataSource通過公開方法返回給調用者的是經過兩次工廠出來的Connection.如果我們先不考慮JDBC分布式事務,只看下圖左邊,就是說工廠ConnectionPoolDataSource生成PooledConntion,二級工廠PooledConntion生產Connection,這兩個過程由DataSource在內部包裝,只提供最后的產品Connection.

2.DataSource是服務端數據源,而傳統(tǒng)的連結池是客戶端數據源:

傳統(tǒng)的連結池要調用者生成這個連池的實例,完成初如化,這樣一個數據庫為了防止連結池的實例生成無限多個物理連結,就要對保存物理連結的數據結構進行靜態(tài)定義,否則,你在你的程序中生成一個連結池對象,它生成30個物理連結,我又在我的程序中生成連結池實例,又生成30個物理連結,那就無法控制了,所以保存這30個物理連結的數據結構必須是靜態(tài)的.

而DataSource同一個對象初始化后,對象被綁定到jndi服務器上,通過jdni得到的是它的代碼存根,其中只包含Connection,而物理連結是不可能序列化的,所以不會被重新生成,調用者通過Connection對象作為參數傳給服務端,由它來操作實際的物理連結.

思考一下:如果不考慮性能問題,我是否可以把PooledConnction不再二次工廠化,只把PooledConntion作為Connection作為DataSource產品返回給調用者?

答案是不可以,因為物理連結不能序列化,也就是無法進行分布式引用.二次工廠化不僅解決了性能的問題,也同時解決了JDBC分布式事物調用的問題.

3.為什么說二次工廠化增加性能?

對于產生物理連結,沒有什么區(qū)別,但物理連結本身并沒有滿負載工作,也就是一個物理Connection(TMD,我現(xiàn)在也不好說Connection還是PooledConnectio,以前的Connection就是DataSource中的PooledConnection)其實可以同時綁定更多的Statement,而如果它直接給調用者調用了,句柄就被調用者拿去了,在調用者沒有返回時別的Statement沒法和它進行”聯(lián)系”.而二次工廠的目的就是把多人的Statement通過”新的引用Connection”和物理連結綁定,使它更好地工作.
舉個例子,汽車這種東西,在目前的中國還是很昂貴的,作為客戶(調用者)我有幾件貨物要運,但一輛汽車(物理連結)如果我一用,別人就不能用了.(傳統(tǒng)連結池和連結),盡管它還可以裝更多的貨物,現(xiàn)在汽車公司只能你一個車號(新的Connection),不給你實際的汽車,你只要把你的幾件東西只交給這個車號,而其他人也可能同時把幾件東西交給這個車號,最盡有更多的貨物因為使用同一車號而使那個物理汽車裝載了更多的貨物,當然如果它滿了的話會產生另一輛車,如果生產的輛達到規(guī)定的數目你只好等等了,但這樣把多個客戶的貨物和同一車號關聯(lián)使汽車能更多地處理事務,明顯地增加了性能.

理解了以上的結構,我們就不難理解javax.sql對分布式事務的支持,當然,如果你對事務本身還不理解,那我就沒辦法讓你理解以下的知識,因為我不可能再停下來講什么是事務.它是和JDBC相同級別的內容,也許在別的地方我會再講.

從上面的結構中右邊看到,在DataSource中,其實封裝了兩種工廠,這兩種工廠都是兩層次的,其實XADataSource的作用和ConnectioPooledDataSource一樣,都是產生物理連結的,只不過它產生支持分布式事務的物理連結XAConnectio而已,(以后記住,凡以XA命名的類都是支持JDBC分布式事務的標記.)我們看到,XAConnection中getConnection()出來的連結和PooledConnection中getConnection()出來的連結沒有區(qū)別,而Connection是DataSource的最終產品,這意味作什么?

這意味著支持分布式事務的過程由DataSource來做,你要操作的Connection和平時沒有兩樣,你只要聲明事務的開始和事務提交就行了!要使你的連結支持JDBC分布式事務,你要在DataSource的配置中指明type是XADataSource就行了.然后申請一個一務(為了說明方便省略了

  1. try{}catch(){})  
  2.    UserTransaction ut = ...........;  
  3.    ut.begin();  
  4.    Connection con1 = .........;  
  5.    Connection con2 = .........;  
  6.    Connection con3 = .........;  
  7.    if(條件) ut.setRollbackOnly();  
  8.    con1.close();  
  9.    con2.close();  
  10.    con3.close();  

考察一下,為什么XADataSource類型的物理工廠會產生的連結可以直接被事務管理呢?其實這就是封裝的好處了,在XADataSource產生XAConnection時,這個XAConnection實際是PooledConnection的子類,它擴展了一個getXAResource() 方法,事務通過這個方法把它加入到事務容器中進行管理.對于調用者來說,根本看不到事務是如果管理的,你只要聲明開始事務,告訴容器我下面的操作要求事務參與了,最后告訴事務說到這兒可以提交或回滾了,別的都是黑箱操作,不要你來做.

當然如果沒有分布式事務的需求,雖然XADataSource可以用于本地事務,但它要做很多資源測試,是一種浪費.

最后要說明的是,既然你把操作交給事務來做,你就要對他放心,事務邊界由容器管理,你只在最后確定是提交還是回滾還是強行回滾setRollbackOnly()(強行回滾后不可以再提交).你不要在事務中調用某一連結的rollback,commit,也不能把Connection設為自動提交,一般來說當你聲明為支持JDBC分布式事務的DataSource時,創(chuàng)建的連結默認都是關閉自動提交的,只是你自己不要打開它.

因為SUN的文檔只對DataSource接口作了一般規(guī)定,并沒有規(guī)定具體算法,所以我們在清楚上面的結構后,可以實現(xiàn)不依賴容器的DataSource(其實只是它的思想.因為你寫出來的不依賴容器的DataSource)已經不是這個意義上的DataSource了.它不能綁定到服務器上讓遠程引用,所以生成物理連結的工廠應該是靜態(tài)的,而物理連結這種產品也應該是靜態(tài)的.然后再生成多個引用連結.但這好象沒有多大意義,因為純客戶端軟件一般來說不可能同時有上萬個客戶在線訪問的,根本用不著這么費事地實現(xiàn)連結池.

【編輯推薦】

  1. 簡述Spring JDBC的學習
  2. J2EE技術之JDBC連接數據庫的各種寫法
  3. JBoss JDBC驅動報錯問題分析與解決
  4. JavaBean中使用JDBC方式進行事務處理
  5. JDBC與JSP簡單模擬MVC三層架構
責任編輯:佚名 來源: CSDN
相關推薦

2020-03-31 08:05:23

分布式開發(fā)技術

2022-06-27 08:21:05

Seata分布式事務微服務

2022-06-21 08:27:22

Seata分布式事務

2017-07-26 15:08:05

大數據分布式事務

2019-10-10 09:16:34

Zookeeper架構分布式

2009-09-18 15:10:13

分布式事務LINQ TO SQL

2021-09-29 09:07:37

分布式架構系統(tǒng)

2013-12-06 09:37:49

分布式系統(tǒng)Travis CI

2025-04-29 04:00:00

分布式事務事務消息

2019-06-26 09:41:44

分布式事務微服務

2022-03-24 07:51:27

seata分布式事務Java

2025-05-15 08:05:00

2020-10-16 06:36:57

CapBase定理

2018-10-28 17:54:00

分布式事務數據

2023-12-26 08:59:52

分布式場景事務機制

2023-09-11 15:40:43

鍵值存儲云服務

2022-07-10 20:24:48

Seata分布式事務

2024-01-05 07:28:50

分布式事務框架

2021-02-01 09:35:53

關系型數據庫模型

2022-06-14 10:47:00

分布式事務數據
點贊
收藏

51CTO技術棧公眾號

成人免费在线观看网站| 久久99深爱久久99精品| 浪潮色综合久久天堂| 成人香蕉视频| 91精品观看| 亚洲天堂2020| 精品无吗乱吗av国产爱色| 国产老妇另类xxxxx| 91久久久在线| 国产成人免费精品| 欧美男男青年gay1069videost| 日本中文不卡| 国产日产精品_国产精品毛片| 国产视频在线一区二区| 蜜桃视频在线观看www社区 | 亚洲精品一区在线观看| 在线观看免费毛片| 亚洲日本一区二区| wwwwxxxx日韩| 国产日韩欧美精品在线| 久久综合亚洲精品| 日本美女视频一区二区| 91成人免费观看| 色婷婷一区二区三区| 久久成人综合视频| 清纯唯美激情亚洲| 久久精品国产精品亚洲| 日韩精品一区二区三区| 亚洲乱码国产乱码精品精| 蜜桃视频在线入口www| 在线精品亚洲一区二区不卡| 神马精品久久| 在线视频亚洲一区| av网站免费在线观看| 91精品国产欧美一区二区| 免费av在线播放| 日韩一区二区精品在线观看| caoporn免费在线视频| 69堂精品视频| 偷拍中文亚洲欧美动漫| 久久伊人精品视频| 999国产精品| 少妇免费毛片久久久久久久久| 久久精品国产一区二区三区免费看| 777777av| 欧美日韩国产中字| 香蕉伊大人中文在线观看| 日韩三级影视基地| 人妖一区二区三区| 国产精品国产精品国产专区不蜜| 精品剧情v国产在线观看在线| 午夜伦理在线| 亚洲欧洲日产国码av系列天堂| 成人四虎影院| 国产在线观看91精品一区| 亚洲视频二区| www.xxx亚洲| 欧美日韩国产一级片| 亚洲香蕉久久| 国产精品一区二区不卡视频| 蓝色福利精品导航| 中文字幕成人在线视频| 欧美少妇xxx| 麻豆国产一区| 亚洲欧美99| 精品日韩视频在线观看| 日韩精品一区二区三区中文| 久久国产主播精品| 视频欧美一区| 亚洲高清精品中出| 一本久久综合亚洲鲁鲁五月天| 小草在线视频免费播放| 成人激情av在线| 国产毛片精品视频| 在线观看黄av| 国产日韩欧美在线| 成人av在线播放网站| 日本无删减在线| 国产欧美一区二区三区不卡高清| 亚洲综合色丁香婷婷六月图片| 蜜桃精品在线| 在线观看日韩羞羞视频| 欧美影视一区二区三区| 一精品久久久| 中文字幕av在线| 国产精成人品localhost| 福利视频一区二区| 欧美精品观看| 一二三中文字幕在线| 国产精品日本精品| 亚洲黄色在线视频| 免费看日本一区二区| 桃乃木香奈av在线| 99一区二区| 日韩一区二区视频| 另类小说欧美激情| 三级成人在线| 日韩亚洲在线视频| 欧美性受xxxx黑人猛交| 五月天激情小说综合| 日韩欧美一区二区三区在线视频| 性欧美1819| 亚洲综合中文字幕在线| 欧美少妇一区二区| 久久精品国产99国产精品| 国产免费不卡| 国产一级片黄色| 国内精品400部情侣激情| 一本色道久久综合亚洲精品按摩| 99精品热视频只有精品10| 高清视频在线观看三级| 亚洲福利精品视频| 99久久久精品免费观看国产| 精品粉嫩超白一线天av| 91啪亚洲精品| 亚洲欧美日韩在线观看a三区 | 亚洲国产精品免费视频| 美腿丝袜亚洲色图| 国产区二区三区| 91a在线视频| 91精品国产色综合久久ai换脸| 国产一区二区成人久久免费影院| 欧美影院精品| 白白色在线观看| 免费国产视频| 91亚洲免费视频| 国产一区二区三区视频在线观看| 国产精品黄网站| 国产一区二区三区黄| 国产曰批免费观看久久久| 黄瓜视频免费观看在线观看www| 欧美日韩中字一区| 久久亚洲二区三区| 国产视频福利在线| 欧美女同在线观看| 国产美女在线一区| 久久精品国产精品亚洲精品色| 日本成人激情视频| 亚洲嫩模很污视频| 欧美日韩久久久久久| 亚洲三级视频在线观看| 国产高清不卡二三区| 美女网站在线免费欧美精品| 亚洲精品888| 欧美日本在线| 欧美精品色图| 国产伦精品一区二区三区视频| 一区二区三区国产好| 日韩av一级| 亚洲校园激情春色| 精品免费av在线| 精品九九久久| 国产另类在线| 国产精品2023| 日韩精品久久| 91国语精品自产拍| 免费看黄裸体一级大秀欧美| 久久久噜噜噜| 麻豆精品一区二区三区| 2019国产精品| 欧美日韩人人澡狠狠躁视频| 欧美在线免费观看亚洲| 91麻豆精品国产91久久久更新时间| 日韩一级免费观看| 一区二区三区在线播放欧美| 欧美超级乱淫片喷水| 成人国产精品久久久| 亚洲高清视频一区二区| 欧美视频免费看欧美视频| 国产成人无码精品久久久性色| 性网站在线免费观看| 日本在线视频站| 国产图片一区| 一本色道88久久加勒比精品| 白白色 亚洲乱淫| 亚洲午夜视频在线观看| 制服.丝袜.亚洲.中文.综合| 亚洲欧美国产va在线影院| 日本一区二区不卡| 国产精品欧美久久| 欧美18—20岁hd第一次| 国产高潮在线| 三级精品视频| 精品在线视频一区| 91色porny| 久久99国产精品尤物| 一区二区免费| 男人天堂亚洲二区| 黑人巨大亚洲一区二区久| 不卡av一区二区| 成人激情文学综合网| 一区二区三区四区中文字幕| 亚洲国产精品va在线看黑人动漫| 久久露脸国产精品| 国产成年人在线观看| 色开心亚洲综合| 五月久久久综合一区二区小说| 91美女视频网站| 久久久国产精品视频| 亚洲美女搞黄|