明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

JDBC Connection Pool

[摘要]數(shù)據(jù)庫(kù)連接池簡(jiǎn)介 在傳統(tǒng)的兩層結(jié)構(gòu)中,客戶端程序在啟動(dòng)時(shí)打開數(shù)據(jù)庫(kù)連接,在退出程序時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接。這樣,在整個(gè)程序運(yùn)行中,每個(gè)客戶端始終占用一個(gè)數(shù)據(jù)庫(kù)連接,即使在大量沒(méi)有數(shù)據(jù)庫(kù)操作的空閑時(shí)間,如用...
數(shù)據(jù)庫(kù)連接池簡(jiǎn)介
在傳統(tǒng)的兩層結(jié)構(gòu)中,客戶端程序在啟動(dòng)時(shí)打開數(shù)據(jù)庫(kù)連接,在退出程序時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接。這樣,在整個(gè)程序運(yùn)行中,每個(gè)客戶端始終占用一個(gè)數(shù)據(jù)庫(kù)連接,即使在大量沒(méi)有數(shù)據(jù)庫(kù)操作的空閑時(shí)間,如用戶輸入數(shù)據(jù)時(shí),從而造成數(shù)據(jù)庫(kù)連接的使用效率低下。
在三層結(jié)構(gòu)模式中,數(shù)據(jù)庫(kù)連接通過(guò)中間層的連接池管理。只有當(dāng)用戶真正需要進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),中間層才從連接池申請(qǐng)一個(gè)連接,數(shù)據(jù)庫(kù)操作完畢,連接立即釋放到連接池中,以供其他用戶使用。這樣,不僅大大提高了數(shù)據(jù)庫(kù)連接的使用效率,使得大量用戶可以共享較少的數(shù)據(jù)庫(kù)連接,而且省去了建立連接的時(shí)間。

連接池的配置使用
數(shù)據(jù)庫(kù)連接池是應(yīng)用服務(wù)器的一項(xiàng)基本功能,我們以Apusic Application Server為例,來(lái)說(shuō)明JDBC連接池的配置使用。

Apusic JDBC連接池提供對(duì)多種數(shù)據(jù)庫(kù)的支持,如Oracle、MS SqlServer、Sybase、Informix、DB2等。

Apusic JDBC連接池可以通過(guò)數(shù)據(jù)庫(kù)本身的JDBC Driver連接到數(shù)據(jù)庫(kù),也可以通過(guò)JDBC-ODBC橋連接到數(shù)據(jù)庫(kù)。下面我們以O(shè)racle為例說(shuō)明如何配置連接池:

Oracle數(shù)據(jù)庫(kù)的JDBC Driver包文件classes111.zip在/usr/oracle/jdbc/lib(假設(shè)oracle的安裝目錄是/usr/oracle)目錄下,首先將classes111.zip加入到系統(tǒng)的CLASSPATH中。然后在apusic/config/apusic.conf(假設(shè)安裝目錄為apusic) 中作如下設(shè)置:

<SERVICE
CLASS="com.apusic.jdbc.PoolManager"
NAME="JdbcPool:name=jdbc/sample"
>
<ATTRIBUTE NAME="ExpirationTime" VALUE="300"/>
<ATTRIBUTE NAME="MinCapacity" VALUE="5"/>
<ATTRIBUTE NAME="URL" VALUE="jdbc:oracle:thin:@192.168.19.136:1521:orcl"/>
<ATTRIBUTE NAME="ConnectionProperties" VALUE="user=gtj,password=abc123"/>
<ATTRIBUTE NAME="DriverClassName" VALUE="oracle.jdbc.driver.OracleDriver" />
<ATTRIBUTE NAME="MaxCapacity" VALUE="30"/>
</SERVICE>

ExpirationTime: 超時(shí)時(shí)間,單位是秒。當(dāng)一個(gè)數(shù)據(jù)庫(kù)連接超過(guò)expirationTime設(shè)定時(shí)間不被使用
時(shí),系統(tǒng)會(huì)自動(dòng)關(guān)閉這個(gè)數(shù)據(jù)庫(kù)連接。默認(rèn)值為300秒
MinCapacity:最小連接數(shù)
URL:數(shù)據(jù)庫(kù)的URL
ConnectionProperties: 連接屬性,其中:user用戶名,password密碼
DriverClassName:JDBC驅(qū)動(dòng)程序類名
MaxCapacity:最大連接數(shù)
192.168.19.136: oracle所在計(jì)算機(jī)的IP地址。
 
調(diào)用連接池
我們以一個(gè)JSP程序?yàn)槔,說(shuō)明如何使用連接池。首先通過(guò)JNDI得到DataSource,再的得到連接Connection,如下例所示:


<html>

<head>

<title>Jsp sample</title>

</head>

<body>

<p>

<%@ page contentType="text/html;charset=gb2312" %>

<%@ page import="

java.sql.*,

javax.naming.*,

javax.sql.*

"%>

<%

try{

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup("jdbc/sample");

Connection con = ds.getConnection();

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("select ENAME from EMP");

while(rs.next()){

out.println("<p>" + rs.getString(1));

}

rs.close();

stmt.close();

}catch(Exception e){

System.out.println("jsp:" + e.getMessage());

}finally{

try{

con.close();

}catch(Exception e1){}

}

%>

</body>

</html>



標(biāo)簽:JDBC Connection Pool