麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 網(wǎng)站 > WEB服務(wù) > 正文

Tomcat數(shù)據(jù)庫(kù)連接池的配置方法總結(jié)

2020-05-27 13:44:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 數(shù)據(jù)庫(kù)連接是一種關(guān)鍵的有限的昂貴的資源,這在多用戶網(wǎng)頁(yè)應(yīng)用程序中體現(xiàn)的尤為突出.對(duì)數(shù)據(jù)庫(kù)連接的管理能顯著影響到整個(gè)應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo),數(shù)據(jù)庫(kù)連接池正是針對(duì)這個(gè)問(wèn)題提出的.

數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配,管理和釋放數(shù)據(jù)庫(kù)連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接,而不是再重新建立一個(gè);釋放空閑時(shí)間超過(guò)最大空閑時(shí)間的數(shù)據(jù)庫(kù)連接來(lái)避免因?yàn)闆]有釋放數(shù)據(jù)庫(kù)連接而引起的數(shù)據(jù)庫(kù)連接遺漏,這樣可以明顯提高對(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ù),當(dāng)應(yīng)用程序向連接池請(qǐng)求的連接數(shù)超過(guò)最大連接數(shù)量時(shí),這些請(qǐng)求將被加入到等待隊(duì)列中.

數(shù)據(jù)庫(kù)連接池的最小連接數(shù)和最大連接數(shù)的設(shè)置要考慮到下列幾個(gè)因素:

1.最小連接數(shù)是連接池一直保持的數(shù)據(jù)庫(kù)連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫(kù)連接的使用量不大,將會(huì)有大量的數(shù)據(jù)庫(kù)連接資源被浪費(fèi).

2.最大連接數(shù)是連接池申請(qǐng)的最大連接數(shù),如果數(shù)據(jù)庫(kù)連接請(qǐng)求超過(guò)次數(shù),后面的數(shù)據(jù)庫(kù)連接請(qǐng)求將被加入到等待對(duì)了中,這回影響之后的數(shù)據(jù)庫(kù)操作

如果最小連接數(shù)與最大連接數(shù)相差太大,那么最先的連接請(qǐng)求將會(huì)獲利,之后超過(guò)最小連接數(shù)量的連接請(qǐng)求等價(jià)于建立一個(gè)新的數(shù)據(jù)庫(kù)連接,不過(guò),這些小于最小連接數(shù)的數(shù)據(jù)庫(kù)連接在使用完不會(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?><Context> <WatchedResource>WEB-INF/web.xml</WatchedResource></Context>

配置連接池:

<?xml version=1.0 encoding=utf-8?> 

<Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!--配置oracle數(shù)據(jù)庫(kù)的連接池--> <Resource name="jdbc/oracleds" author="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="scott" password="tiger" driverClassName="oracle.jdbc.dirver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:ora9" /> <!--配置mysql數(shù)據(jù)庫(kù)的連接池, 需要做的額外步驟是將mysql的Java驅(qū)動(dòng)類放到tomcat的lib目錄下 maxIdle 連接池中最多可空閑maxIdle個(gè)連接 minIdle 連接池中最少空閑maxIdle個(gè)連接 initialSize 初始化連接數(shù)目 maxWait 連接池中連接用完時(shí),新的請(qǐng)求等待時(shí)間,毫秒 username 數(shù)據(jù)庫(kù)用戶名 password 數(shù)據(jù)庫(kù)密碼 --> <Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/db_blog" /></Context>

配置好后需要注意的兩個(gè)步驟 

1.將對(duì)應(yīng)數(shù)據(jù)庫(kù)的驅(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> 

<description>mysql數(shù)據(jù)庫(kù)連接池</description> <!-- 參考數(shù)據(jù)源名字,同Tomcat中配置的Resource節(jié)點(diǎn)中name屬性值"jdbc/mysqlds"一致 --> <res-ref-name>jdbc/mysqlds</res-ref-name> <!-- 資源類型 --> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope></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 

at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325) at javax.naming.InitialContext.lookup(InitialContext.java:392) at com.iblog.util.DBPoolUtil.<clinit>(DBPoolUtil.java:34)

解決方案: 

上面的異常信息是配置文件中JNDI沒有初始化造成的

如果下面的問(wèn)題都不存在

1.要去檢查下配置文件中連接數(shù)據(jù)庫(kù)的URL參數(shù)是否正確2.以及是否導(dǎo)入了正常的包3.檢查在Tomcat中conf/server.xml文件,檢查是否設(shè)置useNaming="false",如果是,去掉

2.那就是通過(guò)main方法測(cè)試的,這個(gè)數(shù)據(jù)源不支持這樣的測(cè)試方法,程序要運(yùn)行在Tomcat中才能找到相應(yīng)的數(shù)據(jù)源.[我在測(cè)試時(shí)犯這樣的錯(cuò)導(dǎo)致上面錯(cuò)誤出現(xiàn)]

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>      

<%@ page import="java.sql.*" %> <%@ page import="javax.naming.*" %> <%@ page import="javax.sql.DataSource" %><html> <head> <title>Tomcat6.0 JNDI!</title> </head> <body> Tomcat連接池測(cè)試,獲取數(shù)據(jù)源 <br> <% try { //初始化查找命名空間 Context ctx = new InitialContext(); //參數(shù)java:/comp/env為固定路徑 Context envContext = (Context)ctx.lookup("java:/comp/env"); //參數(shù)jdbc/mysqlds為數(shù)據(jù)源和JNDI綁定的名字 DataSource ds = (DataSource)envContext.lookup("jdbc/mysqlds"); Connection conn = ds.getConnection(); conn.close(); out.println("<span style=color:red;>JNDI測(cè)試成功<span>"); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } %> </body> </html>

運(yùn)行效果: 

方法二:在Tomcat的conf/server.xml中配置

打開tomcat的conf/server.xml文件,找到<GlobalNamingResources></GlobalNamingResources>節(jié)點(diǎn),默認(rèn)的內(nèi)容如下

<GlobalNamingResources> 

<Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /></GlobalNamingResources>

在該節(jié)點(diǎn)中加入相關(guān)的池配置信息,如下 

  <GlobalNamingResources> 

<Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> <!--配置mysql數(shù)據(jù)庫(kù)的連接池, 需要做的額外步驟是將mysql的Java驅(qū)動(dòng)類放到tomcat的lib目錄下 --> <Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/db_blog" /> </GlobalNamingResources>

在tomcat的conf/context.xml文件中的<Context></Context>節(jié)點(diǎn)中加入如下內(nèi)容 

<ResourceLink name="jdbc/mysqlds" global="jdbc/mysqlds" type="javax.sql.DataSource"/>

然后在web項(xiàng)目中的WEB-INF目錄下的web.xml中配置

<resource-ref> 

<description>mysql數(shù)據(jù)庫(kù)連接池</description> <!-- 參考數(shù)據(jù)源名字,同Tomcat中配置的Resource節(jié)點(diǎn)中name屬性值"jdbc/mysqlds"一致 --> <res-ref-name>jdbc/mysqlds</res-ref-name> <!-- 資源類型 --> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope></resource-ref>

同樣配置好后,需要重新啟動(dòng)服務(wù)器,讓配置生效. 

方法三:在Tomcat的conf/server.xml中配置虛擬目錄時(shí)配置 

在配置虛擬目錄時(shí),也就是在配置conf下面的server.xml時(shí),在context標(biāo)簽內(nèi)添加池配置.

在說(shuō)該方法之前,先說(shuō)一下,如何用tomcat配置虛擬目錄

在tomcatconf下server.xml中找到

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"></Host>

在其中添加:

<Context path="/website" docBase="F:/myweb" reloadable="true"></Context>

注意:

docBase要改成你的項(xiàng)目目錄。

path為虛擬路徑,訪問(wèn)時(shí)的路徑,注意:一定要加“/” debug建議設(shè)置為0

reloadable設(shè)置為true。  

這樣重新啟動(dòng)tomcat

實(shí)例中如下配置

<Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true"></Context>

接下來(lái)添加池配置,如下

<!--配置虛擬目錄--> 

<Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true"> <Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/db_blog" /></Context>

啟動(dòng)服務(wù)器,測(cè)試,注意因?yàn)槲覀兣渲昧藀ath值為”/website”,所以訪問(wèn)的路徑應(yīng)該為website.如下圖: 

方法四:在Web項(xiàng)目中的META-INF目錄下新建一個(gè)文件context.xml,寫入配置

注意:是META-INF目錄下,不是WEB-INF目錄下

<?xml version=1.0 encoding=utf-8?> 

<Context> <Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/db_blog" logAbandoned="true" /></Context>
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 精国产品一区二区三区四季综 | 成人精品视频在线 | 一区二区三区欧美精品 | 天天天干夜夜夜操 | 国产成人精品网站 | 欧美日韩亚洲精品一区二区三区 | 毛片一级免费看 | 在线无码| 欧美一级毛片大片免费播放 | 亚洲情在线 | 欧产日产国产精品v | 国产一区二区观看 | 久久亚洲春色中文字幕久久 | 青青草成人免费视频在线 | av日韩一区二区 | 成人精品视频在线 | 九九热在线视频观看这里只有精品 | 亚洲免费毛片基地 | 电影一级毛片 | 中文字幕一区在线观看视频 | 成人福利视频导航 | 美国黄色毛片女人性生活片 | 男女羞羞视频在线观看免费 | 亚洲午夜视频在线 | 久久日韩在线 | 久精品久久 | 在线a亚洲视频播放在线观看 | 男女羞羞视频在线观看免费 | 午夜噜噜噜 | 精品成人av一区二区在线播放 | 在线成人影视 | 黄色免费小视频网站 | 久久国产精品二国产精品中国洋人 | 日韩午夜片 | 欧美激情在线播放 | 在线中文字幕播放 | 久久国产午夜 | 羞羞答答影院 | 黄色片小说 | 亚洲成人在线视频网站 | 亚洲一级片在线观看 |