亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

檢測你數據庫連接的物理狀態

2019-11-18 12:10:54
字體:
來源:轉載
供稿:網友

  檢測你數據庫連接的物理狀態
  
  ZDNet China
  
  29/7/2003
  
  URL: http://www.zdnet.com.cn/developer/code/story/0,2000081534,39154865,00.htm
  
  創建連接
  
  
  
  java JDBC API各種類的一個基石是java.sql.Connection類。很多問題都同其復用、共用和驗證相關。對連接的驗證在實時的應用程序中尤其重要,因為它們必須無故障運行或者將故障率降至最低。
  
  
  
  事實上,在很多情況下都可能產生連接的丟失(例如,由于數據庫的崩潰或者由于某些網絡問題的存在)。不幸的是,標準的Java API并沒有提供任何方法來檢測連接的物理狀態,所以在每種特定的情況下都需要一種解決方法。現在讓我們來看看解決這個問題的兩種方法。第一種方法是使用軟件制造商專用的API,第二種方法是使用一種檢測-失敗查詢(test-fail query)的方法。
  
  
  
  
  
  
  
  創建連接
  
  
  
  在使用任何SQL陳述式之前,應用程序必須要先連接到數據庫。建立連接的一種方法是使用java.sql工具包里的連接工廠(connection factory)——DriverManager.getConnection()。但是,建立連接的首選方式是使用javax.sql.DataSource.getConnection()。你應該在對象每次請求進行連接的時候才使用這個工廠方法,而不是在創建了連接之后將這個連接保存在對象里。下面是這個方法的一個例子:
  
  
  
  void foo(){
  
  // ...
  
  Connection conn = myDataSource.getConnection();
  
  PReparedStatement ps = conn.prepareStatement(...);
  
  // ...
  
  }
  
  
  
  此外,一個實現DataSource接口的類能夠使用命名服務來注冊,并使用JNDI API來訪問。DriverManager連接工廠和DataSource的巨大不同之處在于:DataSource能夠答應你控制連接的建立和使用。
  
  
  
  
  
  
  
  連接錯誤的問題
  
  
  
  當你的應用程序嘗試使用一個已經同數據庫斷開的連接時,你會碰到一個像下面這樣的異常:
  
  
  
  java.sql.SQLException: Io exception: The Network Adapter could not establish the connection(lo異常:網絡適配器無法建立連接)
  
  
  
  其結果是,你的SQL查詢會執行失敗。由于沒有哪個API能夠確定一個到數據庫的連接是否失效,因此你就只有在碰到SQL異常的時候才知道這個連接已經失效了。假如一個異常是同一個已斷開的連接相對應的,那么你就必須要調整這個應用程序,這樣它才能夠嘗試重新建立連接,并重新執行查詢任務。很顯然,這種處理數據庫連接的混亂商務邏輯使得代碼更輕易出錯,而且難以治理。
  
  
  
  
  
  
  
  信賴軟件制造商的API
  
  
  
  
  
  信賴軟件制造商的API
  
  
  
  處理連接斷開的一種方法是使用驅動程序專用的API,你可以使用這個API來建立到數據庫的連接。現在讓我們來看看Oracle的JDBC API。OracleConnectionCacheImpl這個類會實現javax.DataSource接口,并在你每次請求的時候驗證一下連接。此外,它還能夠通過緩沖隨后請求的連接來重復使用這個連接。換句話說,假如你關閉了數據庫,然后嘗試使用一個連接,你就會得到一個明確闡明了原因的SQL異常??纯碙isting A,里面有數據源用法的一個例子。
  
  
  
  驗證連接
  
  另一個解決方案是你自己進行連接驗證。你可以編寫一個連接工廠,讓其將連接返回給請求者之前檢測連接的情況。將驗證機制從連接工廠里抽象出來是一個很好的代碼編寫慣例。要實現這一目的,你就要應用GoF策略模式,它會引入一個負責進行連接驗證的接口.
  類圖表
  
  
  
  Listing B里的AbstractDataSource類提供了DataSource接口的基礎實現,這樣就為設置和訪問連接的屬性,包括JDBC驅動程序類、URL、用戶名和密碼,提供了便利的方法。
  
  
  
  這個類的確切實現有JdbcDataSource(Listing C)和ValidDataSource(Listing D)。Listing C里的類為每個請求都創建了一個Connection對象。Listing E里的類通過使用ConnectionValidator從而提供了連接驗證的能力。
  
  
  
  Listing F里的SqlConnectionValidator是這個接口的簡單實現,在這個接口里,一個快速的SQL查詢會被執行,以驗證你認為需要進行驗證的連接。你的這一目的是通過調用validateConnection(Connection conn)方法來實現的,它會在碰到任何連接問題的時候給出一個SQL異常。
  
  
  
  
  
  
  
  驗證的好處
  
  
  
  無論你選擇使用哪種方法,建立一個有效的數據庫連接都是極其重要的,尤其是在處理要害的實時應用程序的時候。雖然定制連接驗證這種方式能夠為你提供更好的靈活性和API的獨立性,但是同使用軟件制造商所提供的API相比而言,它會降低整體的性能。你必須決定,增強可控制性所帶來的好處,同相應所增加的復雜性和代價相比是否值得。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本欧美国产在线| 国产精品一区电影| 4438全国亚洲精品在线观看视频| 97色在线视频观看| 亚洲精品美女在线观看播放| 日本一区二三区好的精华液| 久久久97精品| 国产成人中文字幕| 国产精品麻豆va在线播放| 91久久在线播放| 成人免费大片黄在线播放| 91老司机在线| 精品久久久久久久久久国产| 亚洲毛片在线观看| 欧美国产激情18| 亚洲毛片在线观看| 日韩中文综合网| 久久精品久久久久久国产 免费| 疯狂做受xxxx高潮欧美日本| 奇米成人av国产一区二区三区| 中国china体内裑精亚洲片| 国产精品久久久久久久久免费| 98视频在线噜噜噜国产| 激情久久av一区av二区av三区| 国产一区二区精品丝袜| 亚洲天堂免费在线| 成人网中文字幕| 色香阁99久久精品久久久| 亚洲图中文字幕| 欧美成人精品激情在线观看| 日韩欧美福利视频| 欧美劲爆第一页| 欧美福利小视频| 国产精品久久久久久五月尺| 麻豆一区二区在线观看| 欧美日韩国产一中文字不卡| 日韩乱码在线视频| 国产精品主播视频| 亚洲美女自拍视频| 日韩精品亚洲元码| 国产精品久久激情| 欧美午夜美女看片| 精品国内产的精品视频在线观看| 久久精品在线播放| 91精品久久久久久综合乱菊| 久久免费高清视频| 91亚洲精品一区二区| 国产精品高潮呻吟久久av野狼| 91免费在线视频| 欧美精品一区二区三区国产精品| 亚洲专区中文字幕| www.美女亚洲精品| 欧美成人精品三级在线观看| 97视频网站入口| 亚洲男人的天堂网站| 亚洲欧美日韩天堂一区二区| 欧美日韩国产精品一区二区不卡中文| 亚洲精品国产美女| 青草青草久热精品视频在线网站| 日本一区二区三区四区视频| 欧美日韩国产精品一区二区三区四区| 日韩的一区二区| 91精品啪aⅴ在线观看国产| 国产精品久久9| 久久久精品国产| 欧美最顶级的aⅴ艳星| 国产+人+亚洲| 国内免费久久久久久久久久久| 精品成人在线视频| 亚洲人成电影网站色www| 亚洲午夜久久久久久久| 亚洲欧美在线磁力| 亚洲第一精品电影| 亚洲丁香婷深爱综合| 久久99国产综合精品女同| 91精品国产亚洲| 欧美激情视频在线观看| 色播久久人人爽人人爽人人片视av| 一二美女精品欧洲| 国产噜噜噜噜久久久久久久久| 亚洲a成v人在线观看| 91视频免费网站| 精品国产一区二区三区久久| 97在线观看视频| 中文字幕亚洲无线码a| 成人在线视频福利| 国产成一区二区| 影音先锋欧美在线资源| 97超级碰碰碰久久久| 成人免费看吃奶视频网站| 91久久在线播放| 欧美富婆性猛交| 亚洲欧美福利视频| 欧美另类在线播放| 国产精品青草久久久久福利99| 国产亚洲精品久久| 97国产suv精品一区二区62| 亚洲直播在线一区| 精品国内自产拍在线观看| 亚洲欧美日韩精品久久| 亚洲精品suv精品一区二区| 国产日韩av在线| 久青草国产97香蕉在线视频| 欧美视频在线观看 亚洲欧| 国产精品成久久久久三级| 精品色蜜蜜精品视频在线观看| 欧美午夜精品在线| 欧美日韩国产精品专区| 欧美尺度大的性做爰视频| www.欧美免费| 精品女同一区二区三区在线播放| 国产精品96久久久久久又黄又硬| www.99久久热国产日韩欧美.com| 国产精品久久在线观看| 国产成人精品av| 亚洲国产精久久久久久久| 伊人久久久久久久久久久久久| 91免费国产网站| 欧美日韩色婷婷| 国产午夜精品美女视频明星a级| 久久影院资源网| 亚洲毛片一区二区| 亚洲电影免费在线观看| 欧美激情久久久久久| 色噜噜久久综合伊人一本| 中文字幕日韩欧美在线| 亚洲欧美综合区自拍另类| 亚洲精品理论电影| 日韩精品高清在线| 2020久久国产精品| 久久亚洲一区二区三区四区五区高| zzjj国产精品一区二区| 国产免费观看久久黄| 欧美人与物videos| 欧美—级a级欧美特级ar全黄| 久久久精品免费| 久久国产精品首页| 中文字幕日韩欧美在线视频| 亚洲第一网站男人都懂| 成人国产精品av| 国产免费一区二区三区香蕉精| 美日韩精品免费视频| 91最新在线免费观看| 夜夜嗨av一区二区三区免费区| 国产欧美一区二区三区久久人妖| 日韩精品亚洲元码| 欧美裸体男粗大视频在线观看| 中文字幕欧美日韩va免费视频| 日韩中文字幕网站| 国产成人激情小视频| 久久久久久尹人网香蕉| 欧美性猛交xxxx免费看| 中文字幕国产精品久久| 国产一区二中文字幕在线看| 日本不卡高字幕在线2019| 一本久久综合亚洲鲁鲁| 国产精品福利久久久| 国产精品久久久久9999| 中文字幕日韩在线视频| 亚洲精品免费一区二区三区| 久久久亚洲国产天美传媒修理工| 黑人巨大精品欧美一区免费视频| 日韩一区二区精品视频| 亚洲字幕在线观看|