論文選登:使用JNDI獲取數(shù)據(jù)庫(kù)連接池


來(lái)源:中國(guó)產(chǎn)業(yè)經(jīng)濟(jì)信息網(wǎng)   時(shí)間:2019-11-26





  [來(lái)源:《中國(guó)經(jīng)濟(jì)社會(huì)論壇》(學(xué)術(shù)版)2019年6月刊;作者:王春明(黑龍江工商學(xué)院) 肖鵬]

  摘要:本文探討了使用JNDI獲取數(shù)據(jù)庫(kù)連接池的技術(shù)。通過(guò)具體代碼完成了使用JNDI獲取數(shù)據(jù)庫(kù)連接池的操作。

  關(guān)鍵詞:JDBC,數(shù)據(jù)庫(kù)連接池,JNDI

  一、JDBC

  JDBC連接數(shù)據(jù)庫(kù)的方式是一種比較傳統(tǒng)的連接方式,這種連接方式在執(zhí)行過(guò)程中,需要經(jīng)常與數(shù)據(jù)庫(kù)建立連接,并且在使用后再關(guān)閉連接,釋放資源??上攵l繁的連接和釋放操作必然要耗費(fèi)很多系統(tǒng)資源,而且容易引發(fā)異常,因而需要有一種新的技術(shù)來(lái)彌補(bǔ)它的不足,這就是連接池(Connection Pool)技術(shù)。

  二、數(shù)據(jù)庫(kù)連接池

  數(shù)據(jù)庫(kù)連接是非常占用系統(tǒng)資源的,這一點(diǎn)在多用戶訪問(wèn)的應(yīng)用程序中體現(xiàn)得尤為突出。對(duì)數(shù)據(jù)庫(kù)連接的管理能顯著影響到整個(gè)應(yīng)用程序的伸縮性健壯性。數(shù)據(jù)庫(kù)連接池正是針對(duì)這個(gè)問(wèn)題提出來(lái)的。

  數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接,而不再是重新建立一個(gè);釋放空閑時(shí)間超過(guò)最大空閑時(shí)間的數(shù)據(jù)庫(kù)連接,以避免由于沒(méi)有釋放數(shù)據(jù)庫(kù)連接而引起的數(shù)據(jù)庫(kù)連接遺漏。這項(xiàng)技術(shù)能明顯地提高對(duì)數(shù)據(jù)庫(kù)操作的性能。

  數(shù)據(jù)庫(kù)連接池在初始化時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫(kù)連接并放在連接池中,這些數(shù)據(jù)庫(kù)連接的數(shù)量是由最小數(shù)據(jù)庫(kù)連接數(shù)來(lái)設(shè)定的。無(wú)論這些數(shù)據(jù)庫(kù)連接是否被使用,連接池都將確保至少擁有這么多的連接數(shù)量。連接池的最大數(shù)據(jù)庫(kù)連接數(shù)量限定了這個(gè)連接池能占有的最大連接數(shù),當(dāng)應(yīng)用程序向連接池請(qǐng)求的連接數(shù)超過(guò)最大連接數(shù)量時(shí),這些請(qǐng)求將被加入等待隊(duì)列中。

  數(shù)據(jù)庫(kù)連接池提前準(zhǔn)備好連接對(duì)象,提高了訪問(wèn)效率,控制連接數(shù)量,防止同時(shí)過(guò)多用戶訪問(wèn)導(dǎo)致性能大大降低,數(shù)據(jù)庫(kù)崩潰等問(wèn)題。

  三、數(shù)據(jù)庫(kù)連接池管理連接的方式

  對(duì)于連接的管理可使用空閑池,即把已經(jīng)創(chuàng)建但尚末分配出去的連接存放到一個(gè)空閑池中;每當(dāng)用戶請(qǐng)求一個(gè)連接時(shí),系統(tǒng)首先檢查空閑池內(nèi)有沒(méi)有空閑連接。如果有就分配一個(gè)連接給用戶服務(wù);如果沒(méi)有則檢查當(dāng)前連接池是否達(dá)到連接池所允許的最大連接數(shù)。如果沒(méi)有達(dá)到,就新建立一個(gè)連接。如果已經(jīng)達(dá)到,就等待一定的時(shí)間。如果在等待的時(shí)間內(nèi)有連接被釋放出來(lái),就可以把這個(gè)連接分配給等待的用戶。如果等待時(shí)間超過(guò)預(yù)定時(shí)間,則返回空值(null)。系統(tǒng)對(duì)已經(jīng)分配出去正在使用的連接只做計(jì)數(shù),當(dāng)使用完后再返還給空閑池。

  四、在Tomcat上配置數(shù)據(jù)源與連接池

  數(shù)據(jù)源在JDBC擴(kuò)展包中定義了javax.sql.DataSourdce接口,它負(fù)責(zé)建立與數(shù)據(jù)庫(kù)的連接,在應(yīng)用程序中訪問(wèn)數(shù)據(jù)庫(kù)時(shí)不必編寫(xiě)連接數(shù)據(jù)庫(kù)的代碼,可以直接從數(shù)據(jù)源獲得數(shù)據(jù)庫(kù)連接。DataSource對(duì)象是由Web容器(Tomcat)提供的,因此不能在程序中采用創(chuàng)建一個(gè)實(shí)例的方式生成DataSource對(duì)象,本論文采用JNDI來(lái)實(shí)現(xiàn)。JNDI的全稱是Java Naming and Directory Interface(JAVA命名與目錄接口),是一種將對(duì)象和名字綁定的技術(shù)。使用JNDI,應(yīng)用程序可以通過(guò)資源名字來(lái)獲得相應(yīng)的對(duì)象、服務(wù)或目錄。具體程序略。

  在Tomcat中配置好數(shù)據(jù)源后,Tomcat會(huì)將這個(gè)數(shù)據(jù)源綁定到JNDI名稱空間,然后通過(guò)Context的lookup()方法來(lái)查找到這個(gè)數(shù)據(jù)源,找到數(shù)據(jù)源之后,使用getConnection()方法創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接,之后就可以像使用JDBC直接連接數(shù)據(jù)庫(kù)那樣操作數(shù)據(jù)庫(kù)了。在測(cè)試頁(yè)面中建立500個(gè)連接并且關(guān)閉,然后計(jì)算耗時(shí)的時(shí)間。從運(yùn)行結(jié)果分析,使用數(shù)據(jù)庫(kù)連接池的方式可以提高訪問(wèn)數(shù)據(jù)庫(kù)的效率。需要注意的是,數(shù)據(jù)庫(kù)訪問(wèn)完畢后要注意釋放資源,這里的關(guān)閉是將數(shù)據(jù)庫(kù)連接返回連接池。(作者簡(jiǎn)介:王春明,女, 工學(xué)碩士,副教授,黑龍江工商學(xué)院,研究方向軟件工程)

  參考文獻(xiàn):

  [1]商杰,朱戰(zhàn)立.數(shù)據(jù)庫(kù)連接池技術(shù)研究與應(yīng)用[ J ] . 現(xiàn)代 電子技術(shù),2007 (5 ): 95 -97.

  [2]劉歡杰,魏靜敏. 關(guān)于JAVA的數(shù)據(jù)庫(kù)連接池的探討 信息系統(tǒng)工程2012(5) 44-44.

  [3]鮑宏圖,劉實(shí),張德修,等. JSP軟件開(kāi)發(fā)中數(shù)據(jù)庫(kù)連接 池技術(shù)的探討與應(yīng)用[ J ] . 內(nèi)蒙古大學(xué)學(xué)報(bào)(自然科學(xué) 版),2007, 38 (3) : 337 -341.

  轉(zhuǎn)自:大眾新聞網(wǎng)

  【版權(quán)及免責(zé)聲明】凡本網(wǎng)所屬版權(quán)作品,轉(zhuǎn)載時(shí)須獲得授權(quán)并注明來(lái)源“中國(guó)產(chǎn)業(yè)經(jīng)濟(jì)信息網(wǎng)”,違者本網(wǎng)將保留追究其相關(guān)法律責(zé)任的權(quán)力。凡轉(zhuǎn)載文章及企業(yè)宣傳資訊,僅代表作者個(gè)人觀點(diǎn),不代表本網(wǎng)觀點(diǎn)和立場(chǎng)。版權(quán)事宜請(qǐng)聯(lián)系:010-65367254。

延伸閱讀

熱點(diǎn)視頻

多措并舉穩(wěn)外貿(mào) 動(dòng)力強(qiáng)勁底氣足 多措并舉穩(wěn)外貿(mào) 動(dòng)力強(qiáng)勁底氣足

熱點(diǎn)新聞

熱點(diǎn)輿情

特色小鎮(zhèn)

?

微信公眾號(hào)

版權(quán)所有:中國(guó)產(chǎn)業(yè)經(jīng)濟(jì)信息網(wǎng)京ICP備11041399號(hào)-2京公網(wǎng)安備11010502035964