999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談數(shù)據(jù)庫連接池原理及實(shí)現(xiàn)

2014-12-15 02:32:59趙登峰朱洪濤
中國科技縱橫 2014年22期

趙登峰+朱洪濤

【摘 要】 本文探討了數(shù)據(jù)庫連接池的原理,并給出了一個(gè)在Tomcat服務(wù)器上配置了數(shù)據(jù)庫連接池的實(shí)例。

【關(guān)鍵詞】 數(shù)據(jù)庫連接池 Jsp Tomcat服務(wù)器

1 引言

在實(shí)際開發(fā)中,特別是在Web應(yīng)用中,如果JSP使用JDBC直接訪問數(shù)據(jù)庫中的數(shù)據(jù),每一次數(shù)據(jù)訪問請(qǐng)求都必須經(jīng)歷建立數(shù)據(jù)庫連接、打開數(shù)據(jù)庫、存取數(shù)據(jù)和關(guān)閉數(shù)據(jù)庫連接等步驟,而連接并打開數(shù)據(jù)庫是一件既消耗系統(tǒng)內(nèi)存又耗費(fèi)時(shí)間的工作,而且如果頻繁執(zhí)行這些數(shù)據(jù)庫操作,勢必占用很多系統(tǒng)資源,系統(tǒng)的性能必然會(huì)急劇下降,甚至?xí)?dǎo)致系統(tǒng)崩潰。數(shù)據(jù)庫連接池技術(shù)[1]是解決這個(gè)問題最常用的方法。

2 數(shù)據(jù)庫連接池實(shí)現(xiàn)原理

為了解決消耗系統(tǒng)資源問題,可以事先先創(chuàng)建一定數(shù)量的連接放入連接池中提供給用戶使用,用戶使用完后把連接返回連接池。

2.1 創(chuàng)建連接池

首先要?jiǎng)?chuàng)建一個(gè)靜態(tài)的連接池。這里的“靜態(tài)”是指池中的連接是在系統(tǒng)初始化時(shí)就分配好的,并且不隨意關(guān)閉。Java提供了很多容器類可用來構(gòu)建連接池,例如Stack,Vector等。在系統(tǒng)初始化時(shí),根據(jù)配置創(chuàng)建連接并放置在連接池中,以后所使用的連接都是從該連接池中獲取的,這樣就可以避免連接隨意建立、關(guān)閉造成的系統(tǒng)浪費(fèi)。

2.2 分配、釋放策略

創(chuàng)建好連接池后,需要提供一套自定義的分配、釋放策略以保證數(shù)據(jù)庫連接的有效復(fù)用。當(dāng)客戶請(qǐng)求數(shù)據(jù)庫連接時(shí),首先看連接池中是否有空閑連接,如果存在空閑連接則把連接分配給客戶,并作相應(yīng)處理;若池中沒有空閑連接,就在已經(jīng)分配出去的連接中,尋找一個(gè)合適的連接給客戶,此時(shí)該連接在多個(gè)客戶間復(fù)用。當(dāng)客戶釋放數(shù)據(jù)庫連接時(shí),可以根據(jù)該連接是否被復(fù)用,進(jìn)行不同的處理。如果連接沒有使用者,就再重新放入池中,而不是被關(guān)閉。

2.3 配置策略

數(shù)據(jù)庫連接池中到底放多少個(gè)連接,連接耗盡后該如何處理,這就是配置策略需要解決的問題。在一般情況下,配置策略[2]在開始時(shí)就根據(jù)具體的應(yīng)用需求,給出一個(gè)初始的連接池中的數(shù)目以及一個(gè)連接池可以擴(kuò)張的最大連接數(shù)目。

3 Tomcat中數(shù)據(jù)連接池的配置實(shí)例

以上講述了數(shù)據(jù)庫連接池的原理,下面給出一個(gè)具體的實(shí)例來說明如何配置Tomcat服務(wù)器的連接池。以SQL Sever 2005數(shù)據(jù)庫為例。

首先在進(jìn)行Tomcat連接池配置之前,先將SQL Server 2005數(shù)據(jù)庫連接驅(qū)動(dòng)程序包sqljdbc.jar放置于Tomcat 5.5安裝目錄下的lib目錄中。然后在Tomcat 5.5安裝目錄下的conf目錄中的context.xml文件的標(biāo)簽中加入如下代碼。

在項(xiàng)目的/WEB-INF/目錄想的web.xml配置文件中添加數(shù)據(jù)連接池的引用代碼,具體配置代碼[3]如下:

<!--對(duì)數(shù)據(jù)庫連接池的描述 -->

SQL Server 2005 DataSource

<!--數(shù)據(jù)庫連接池引用名稱 -->

jdbc/dbpooling

<!--數(shù)據(jù)庫連接池引用類型 -->

javax.sql.DataSource

Container

這樣,Tomcat服務(wù)器上SQL Server 2005數(shù)據(jù)庫的連接池就被引入到Web應(yīng)用程序中了。

下面創(chuàng)建測試數(shù)據(jù)庫連接池的頁面。在項(xiàng)目中創(chuàng)建顯示全部用戶信息的頁面showUser.jsp,其具體代碼如下:

<%@ page language = “java” import =”java.sql.*,javax.sql.*,javax.naming.*” pageEncoding=”GB2312”%>

全部用戶信息

<% try { DataSource ds =null;

InitialContext ctx =new InitialContext();//建立上下文對(duì)象

//通過JNDI查找數(shù)據(jù)連接池 Ds =(DataSource) ctx.lookup(“java:comp/env/jdbc/dbpooling”);

Connection con=ds.getConnection();//獲得數(shù)據(jù)庫連接對(duì)象

//創(chuàng)建PreparedStatement對(duì)象

PreparedStatement pst =con.prepareStatement(“select * from [User]”);

ResultSet rs =pst.executeQuery();//獲取結(jié)果集

Out.println(“”);

Out.println (“”);

//遍歷顯示結(jié)果集中的數(shù)據(jù)

while (rs.next()) { out.println(“”);

out.println(rs.gerString(3)); out.println(“”);

}

out.println(“

“用戶名” 密碼
”); out.println(rs.gerString(2));

out.println(“

”);

} catch (SQLException e) {

out.println(e);

} %>

將項(xiàng)目部署到Tomcat服務(wù)器上,啟動(dòng)服務(wù)器進(jìn)行訪問,程序通過測試。這里需要說明的是,配置完服務(wù)器中的連接池后,必須重新啟動(dòng)服務(wù)器,數(shù)據(jù)連接池才會(huì)有效。

參考文獻(xiàn):

[1]馬建紅,李占波.JSP應(yīng)用與開發(fā)技術(shù).2011.01

[2]孫更新,等編著. Java Web開發(fā).2011.02

[3]飛思科技產(chǎn)品研發(fā)中心,JSP應(yīng)用開發(fā)詳解.北京:電子工業(yè)出版社,2005.12,179-198,540-562.

【摘 要】 本文探討了數(shù)據(jù)庫連接池的原理,并給出了一個(gè)在Tomcat服務(wù)器上配置了數(shù)據(jù)庫連接池的實(shí)例。

【關(guān)鍵詞】 數(shù)據(jù)庫連接池 Jsp Tomcat服務(wù)器

1 引言

在實(shí)際開發(fā)中,特別是在Web應(yīng)用中,如果JSP使用JDBC直接訪問數(shù)據(jù)庫中的數(shù)據(jù),每一次數(shù)據(jù)訪問請(qǐng)求都必須經(jīng)歷建立數(shù)據(jù)庫連接、打開數(shù)據(jù)庫、存取數(shù)據(jù)和關(guān)閉數(shù)據(jù)庫連接等步驟,而連接并打開數(shù)據(jù)庫是一件既消耗系統(tǒng)內(nèi)存又耗費(fèi)時(shí)間的工作,而且如果頻繁執(zhí)行這些數(shù)據(jù)庫操作,勢必占用很多系統(tǒng)資源,系統(tǒng)的性能必然會(huì)急劇下降,甚至?xí)?dǎo)致系統(tǒng)崩潰。數(shù)據(jù)庫連接池技術(shù)[1]是解決這個(gè)問題最常用的方法。

2 數(shù)據(jù)庫連接池實(shí)現(xiàn)原理

為了解決消耗系統(tǒng)資源問題,可以事先先創(chuàng)建一定數(shù)量的連接放入連接池中提供給用戶使用,用戶使用完后把連接返回連接池。

2.1 創(chuàng)建連接池

首先要?jiǎng)?chuàng)建一個(gè)靜態(tài)的連接池。這里的“靜態(tài)”是指池中的連接是在系統(tǒng)初始化時(shí)就分配好的,并且不隨意關(guān)閉。Java提供了很多容器類可用來構(gòu)建連接池,例如Stack,Vector等。在系統(tǒng)初始化時(shí),根據(jù)配置創(chuàng)建連接并放置在連接池中,以后所使用的連接都是從該連接池中獲取的,這樣就可以避免連接隨意建立、關(guān)閉造成的系統(tǒng)浪費(fèi)。

2.2 分配、釋放策略

創(chuàng)建好連接池后,需要提供一套自定義的分配、釋放策略以保證數(shù)據(jù)庫連接的有效復(fù)用。當(dāng)客戶請(qǐng)求數(shù)據(jù)庫連接時(shí),首先看連接池中是否有空閑連接,如果存在空閑連接則把連接分配給客戶,并作相應(yīng)處理;若池中沒有空閑連接,就在已經(jīng)分配出去的連接中,尋找一個(gè)合適的連接給客戶,此時(shí)該連接在多個(gè)客戶間復(fù)用。當(dāng)客戶釋放數(shù)據(jù)庫連接時(shí),可以根據(jù)該連接是否被復(fù)用,進(jìn)行不同的處理。如果連接沒有使用者,就再重新放入池中,而不是被關(guān)閉。

2.3 配置策略

數(shù)據(jù)庫連接池中到底放多少個(gè)連接,連接耗盡后該如何處理,這就是配置策略需要解決的問題。在一般情況下,配置策略[2]在開始時(shí)就根據(jù)具體的應(yīng)用需求,給出一個(gè)初始的連接池中的數(shù)目以及一個(gè)連接池可以擴(kuò)張的最大連接數(shù)目。

3 Tomcat中數(shù)據(jù)連接池的配置實(shí)例

以上講述了數(shù)據(jù)庫連接池的原理,下面給出一個(gè)具體的實(shí)例來說明如何配置Tomcat服務(wù)器的連接池。以SQL Sever 2005數(shù)據(jù)庫為例。

首先在進(jìn)行Tomcat連接池配置之前,先將SQL Server 2005數(shù)據(jù)庫連接驅(qū)動(dòng)程序包sqljdbc.jar放置于Tomcat 5.5安裝目錄下的lib目錄中。然后在Tomcat 5.5安裝目錄下的conf目錄中的context.xml文件的標(biāo)簽中加入如下代碼。

在項(xiàng)目的/WEB-INF/目錄想的web.xml配置文件中添加數(shù)據(jù)連接池的引用代碼,具體配置代碼[3]如下:

<!--對(duì)數(shù)據(jù)庫連接池的描述 -->

SQL Server 2005 DataSource

<!--數(shù)據(jù)庫連接池引用名稱 -->

jdbc/dbpooling

<!--數(shù)據(jù)庫連接池引用類型 -->

javax.sql.DataSource

Container

這樣,Tomcat服務(wù)器上SQL Server 2005數(shù)據(jù)庫的連接池就被引入到Web應(yīng)用程序中了。

下面創(chuàng)建測試數(shù)據(jù)庫連接池的頁面。在項(xiàng)目中創(chuàng)建顯示全部用戶信息的頁面showUser.jsp,其具體代碼如下:

<%@ page language = “java” import =”java.sql.*,javax.sql.*,javax.naming.*” pageEncoding=”GB2312”%>

全部用戶信息

<% try { DataSource ds =null;

InitialContext ctx =new InitialContext();//建立上下文對(duì)象

//通過JNDI查找數(shù)據(jù)連接池 Ds =(DataSource) ctx.lookup(“java:comp/env/jdbc/dbpooling”);

Connection con=ds.getConnection();//獲得數(shù)據(jù)庫連接對(duì)象

//創(chuàng)建PreparedStatement對(duì)象

PreparedStatement pst =con.prepareStatement(“select * from [User]”);

ResultSet rs =pst.executeQuery();//獲取結(jié)果集

Out.println(“”);

Out.println (“”);

//遍歷顯示結(jié)果集中的數(shù)據(jù)

while (rs.next()) { out.println(“”);

out.println(rs.gerString(3)); out.println(“”);

}

out.println(“

“用戶名” 密碼
”); out.println(rs.gerString(2));

out.println(“

”);

} catch (SQLException e) {

out.println(e);

} %>

將項(xiàng)目部署到Tomcat服務(wù)器上,啟動(dòng)服務(wù)器進(jìn)行訪問,程序通過測試。這里需要說明的是,配置完服務(wù)器中的連接池后,必須重新啟動(dòng)服務(wù)器,數(shù)據(jù)連接池才會(huì)有效。

參考文獻(xiàn):

[1]馬建紅,李占波.JSP應(yīng)用與開發(fā)技術(shù).2011.01

[2]孫更新,等編著. Java Web開發(fā).2011.02

[3]飛思科技產(chǎn)品研發(fā)中心,JSP應(yīng)用開發(fā)詳解.北京:電子工業(yè)出版社,2005.12,179-198,540-562.

【摘 要】 本文探討了數(shù)據(jù)庫連接池的原理,并給出了一個(gè)在Tomcat服務(wù)器上配置了數(shù)據(jù)庫連接池的實(shí)例。

【關(guān)鍵詞】 數(shù)據(jù)庫連接池 Jsp Tomcat服務(wù)器

1 引言

在實(shí)際開發(fā)中,特別是在Web應(yīng)用中,如果JSP使用JDBC直接訪問數(shù)據(jù)庫中的數(shù)據(jù),每一次數(shù)據(jù)訪問請(qǐng)求都必須經(jīng)歷建立數(shù)據(jù)庫連接、打開數(shù)據(jù)庫、存取數(shù)據(jù)和關(guān)閉數(shù)據(jù)庫連接等步驟,而連接并打開數(shù)據(jù)庫是一件既消耗系統(tǒng)內(nèi)存又耗費(fèi)時(shí)間的工作,而且如果頻繁執(zhí)行這些數(shù)據(jù)庫操作,勢必占用很多系統(tǒng)資源,系統(tǒng)的性能必然會(huì)急劇下降,甚至?xí)?dǎo)致系統(tǒng)崩潰。數(shù)據(jù)庫連接池技術(shù)[1]是解決這個(gè)問題最常用的方法。

2 數(shù)據(jù)庫連接池實(shí)現(xiàn)原理

為了解決消耗系統(tǒng)資源問題,可以事先先創(chuàng)建一定數(shù)量的連接放入連接池中提供給用戶使用,用戶使用完后把連接返回連接池。

2.1 創(chuàng)建連接池

首先要?jiǎng)?chuàng)建一個(gè)靜態(tài)的連接池。這里的“靜態(tài)”是指池中的連接是在系統(tǒng)初始化時(shí)就分配好的,并且不隨意關(guān)閉。Java提供了很多容器類可用來構(gòu)建連接池,例如Stack,Vector等。在系統(tǒng)初始化時(shí),根據(jù)配置創(chuàng)建連接并放置在連接池中,以后所使用的連接都是從該連接池中獲取的,這樣就可以避免連接隨意建立、關(guān)閉造成的系統(tǒng)浪費(fèi)。

2.2 分配、釋放策略

創(chuàng)建好連接池后,需要提供一套自定義的分配、釋放策略以保證數(shù)據(jù)庫連接的有效復(fù)用。當(dāng)客戶請(qǐng)求數(shù)據(jù)庫連接時(shí),首先看連接池中是否有空閑連接,如果存在空閑連接則把連接分配給客戶,并作相應(yīng)處理;若池中沒有空閑連接,就在已經(jīng)分配出去的連接中,尋找一個(gè)合適的連接給客戶,此時(shí)該連接在多個(gè)客戶間復(fù)用。當(dāng)客戶釋放數(shù)據(jù)庫連接時(shí),可以根據(jù)該連接是否被復(fù)用,進(jìn)行不同的處理。如果連接沒有使用者,就再重新放入池中,而不是被關(guān)閉。

2.3 配置策略

數(shù)據(jù)庫連接池中到底放多少個(gè)連接,連接耗盡后該如何處理,這就是配置策略需要解決的問題。在一般情況下,配置策略[2]在開始時(shí)就根據(jù)具體的應(yīng)用需求,給出一個(gè)初始的連接池中的數(shù)目以及一個(gè)連接池可以擴(kuò)張的最大連接數(shù)目。

3 Tomcat中數(shù)據(jù)連接池的配置實(shí)例

以上講述了數(shù)據(jù)庫連接池的原理,下面給出一個(gè)具體的實(shí)例來說明如何配置Tomcat服務(wù)器的連接池。以SQL Sever 2005數(shù)據(jù)庫為例。

首先在進(jìn)行Tomcat連接池配置之前,先將SQL Server 2005數(shù)據(jù)庫連接驅(qū)動(dòng)程序包sqljdbc.jar放置于Tomcat 5.5安裝目錄下的lib目錄中。然后在Tomcat 5.5安裝目錄下的conf目錄中的context.xml文件的標(biāo)簽中加入如下代碼。

在項(xiàng)目的/WEB-INF/目錄想的web.xml配置文件中添加數(shù)據(jù)連接池的引用代碼,具體配置代碼[3]如下:

<!--對(duì)數(shù)據(jù)庫連接池的描述 -->

SQL Server 2005 DataSource

<!--數(shù)據(jù)庫連接池引用名稱 -->

jdbc/dbpooling

<!--數(shù)據(jù)庫連接池引用類型 -->

javax.sql.DataSource

Container

這樣,Tomcat服務(wù)器上SQL Server 2005數(shù)據(jù)庫的連接池就被引入到Web應(yīng)用程序中了。

下面創(chuàng)建測試數(shù)據(jù)庫連接池的頁面。在項(xiàng)目中創(chuàng)建顯示全部用戶信息的頁面showUser.jsp,其具體代碼如下:

<%@ page language = “java” import =”java.sql.*,javax.sql.*,javax.naming.*” pageEncoding=”GB2312”%>

全部用戶信息

<% try { DataSource ds =null;

InitialContext ctx =new InitialContext();//建立上下文對(duì)象

//通過JNDI查找數(shù)據(jù)連接池 Ds =(DataSource) ctx.lookup(“java:comp/env/jdbc/dbpooling”);

Connection con=ds.getConnection();//獲得數(shù)據(jù)庫連接對(duì)象

//創(chuàng)建PreparedStatement對(duì)象

PreparedStatement pst =con.prepareStatement(“select * from [User]”);

ResultSet rs =pst.executeQuery();//獲取結(jié)果集

Out.println(“”);

Out.println (“”);

//遍歷顯示結(jié)果集中的數(shù)據(jù)

while (rs.next()) { out.println(“”);

out.println(rs.gerString(3)); out.println(“”);

}

out.println(“

“用戶名” 密碼
”); out.println(rs.gerString(2));

out.println(“

”);

} catch (SQLException e) {

out.println(e);

} %>

將項(xiàng)目部署到Tomcat服務(wù)器上,啟動(dòng)服務(wù)器進(jìn)行訪問,程序通過測試。這里需要說明的是,配置完服務(wù)器中的連接池后,必須重新啟動(dòng)服務(wù)器,數(shù)據(jù)連接池才會(huì)有效。

參考文獻(xiàn):

[1]馬建紅,李占波.JSP應(yīng)用與開發(fā)技術(shù).2011.01

[2]孫更新,等編著. Java Web開發(fā).2011.02

[3]飛思科技產(chǎn)品研發(fā)中心,JSP應(yīng)用開發(fā)詳解.北京:電子工業(yè)出版社,2005.12,179-198,540-562.

主站蜘蛛池模板: 精品国产乱码久久久久久一区二区| 在线中文字幕网| 国产自无码视频在线观看| 国产成人91精品| 五月婷婷欧美| 久久久久青草大香线综合精品| 国产激情第一页| 国产一在线观看| 999在线免费视频| 亚洲第一成人在线| 亚洲性视频网站| 亚洲码在线中文在线观看| 欧美成人国产| 国产视频一二三区| 99久视频| 欧美午夜小视频| 国产亚洲视频在线观看| 日韩少妇激情一区二区| 911亚洲精品| www.youjizz.com久久| 色婷婷国产精品视频| 91久久青青草原精品国产| 久久综合丝袜长腿丝袜| 国产欧美精品专区一区二区| 国内精品久久久久久久久久影视| 亚洲色图综合在线| 国内精品免费| 欧美精品另类| 日韩精品毛片| 日本欧美午夜| 亚洲无码免费黄色网址| 欧美一区二区三区国产精品| 播五月综合| 青青青国产在线播放| 国产办公室秘书无码精品| 国产一区二区三区免费| 欧美成人综合在线| 永久天堂网Av| 色婷婷成人网| 综合色在线| 99热国产在线精品99| 国产精品久久久久无码网站| 91人人妻人人做人人爽男同| 国产jizz| 亚洲中文字幕久久精品无码一区| 内射人妻无套中出无码| 亚洲精品欧美重口| 国产综合精品一区二区| 国产亚洲视频在线观看| 免费三A级毛片视频| 日日碰狠狠添天天爽| 大香网伊人久久综合网2020| 国模视频一区二区| 国产原创第一页在线观看| 亚洲国产综合精品一区| 男女精品视频| 88av在线| 国产精品13页| 国产剧情一区二区| 有专无码视频| 国产成+人+综合+亚洲欧美| 久久久波多野结衣av一区二区| 国产美女在线免费观看| 国产亚洲精品自在线| 噜噜噜久久| 国产在线日本| 国产啪在线91| 国产成人凹凸视频在线| AⅤ色综合久久天堂AV色综合| 色婷婷亚洲十月十月色天| 中国美女**毛片录像在线| 99视频在线看| 欧美19综合中文字幕| 免费一极毛片| 91久久偷偷做嫩草影院精品| 午夜国产大片免费观看| 午夜激情婷婷| 亚洲性视频网站| 国产区91| 性69交片免费看| 在线毛片网站| 日韩国产一区二区三区无码|