數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這在多用戶網(wǎng)頁應(yīng)用程序中體現(xiàn)的尤為突出.對(duì)數(shù)據(jù)庫連接的管理能顯著影響到整個(gè)應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo),數(shù)據(jù)庫連接池正是針對(duì)這個(gè)問題提出的.
數(shù)據(jù)庫連接池負(fù)責(zé)分配,管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個(gè);釋放空閑時(shí)間超過最大空閑時(shí)間的數(shù)據(jù)庫連接來避免因?yàn)闆]有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏,這樣可以明顯提高對(duì)數(shù)據(jù)庫操作的性能.
數(shù)據(jù)庫連接池在初始化的時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是又最小數(shù)據(jù)庫連接數(shù)來設(shè)定的,無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù),當(dāng)應(yīng)用程序向連接池請(qǐng)求的連接數(shù)超過最大連接數(shù)量時(shí),這些請(qǐng)求將被加入到等待隊(duì)列中.
數(shù)據(jù)庫連接池的最小連接數(shù)和最大連接數(shù)的設(shè)置要考慮到下列幾個(gè)因素:
1.最小連接數(shù)是連接池一直保持的數(shù)據(jù)庫連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫連接的使用量不大,將會(huì)有大量的數(shù)據(jù)庫連接資源被浪費(fèi).
2.最大連接數(shù)是連接池申請(qǐng)的最大連接數(shù),如果數(shù)據(jù)庫連接請(qǐng)求超過次數(shù),后面的數(shù)據(jù)庫連接請(qǐng)求將被加入到等待對(duì)了中,這回影響之后的數(shù)據(jù)庫操作
如果最小連接數(shù)與最大連接數(shù)相差太大,那么最先的連接請(qǐng)求將會(huì)獲利,之后超過最小連接數(shù)量的連接請(qǐng)求等價(jià)于建立一個(gè)新的數(shù)據(jù)庫連接,不過,這些小于最小連接數(shù)的數(shù)據(jù)庫連接在使用完不會(huì)馬上被釋放,它將被放到連接池中等待重復(fù)使用或是空閑超時(shí)被釋放.
實(shí)例使用的Tomcat版本為6.0
方法一: 在Tomcat的conf/context.xml中配置
在Tomcatapache-tomcat-6.0.33conf目錄下的context.xml文件中配置默認(rèn)值如下:
配置連接池:
<?xml version='1.0' encoding='utf-8'?>
配置好后需要注意的兩個(gè)步驟
1.將對(duì)應(yīng)數(shù)據(jù)庫的驅(qū)動(dòng)類放到tomcat的lib目錄西安
2.重新啟動(dòng)tomcat服務(wù)器,讓配置生效
在web應(yīng)用程序的web.xml中設(shè)置數(shù)據(jù)源參考,如下:
在<web-app></web-app>節(jié)點(diǎn)中加入下面內(nèi)容
<resource-ref>
錯(cuò)誤解決:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
解決方案:
上面的異常信息是配置文件中JNDI沒有初始化造成的
如果下面的問題都不存在