在資料庫(kù)應(yīng)用程式中,資料庫(kù)連線的取得是一個(gè)耗費(fèi)時(shí)間的動(dòng)作,為了避免花費(fèi)時(shí)間在連線的取得與關(guān)閉上,我們會(huì)將連線資源放置在一個(gè)池中,有需要連線時(shí)就從池中取得,不需要連線時(shí)就將之放回池中,以求重複利用連線,連線池也擔(dān)任連線數(shù)量、連線時(shí)間的控制等等動(dòng)作。
Proxool 是一個(gè)開(kāi)放原始碼的連線池管理套件,在使用與設(shè)定上都十分的方便,撰寫此文的同時(shí),Proxool 最新的版本是0.8.3,您可以在以下的網(wǎng)址下載:
http://proxool.sourceforge.net/index.html
網(wǎng)站上的User Guide提供相當(dāng)簡(jiǎn)明的入門文件,您可以直接先從這些文件開(kāi)始下手,而這篇文件則先提供您一個(gè)快速入門的範(fàn)例,讓您知道如何透過(guò)Proxool取得資料庫(kù)連線,這邊所使用的是MySQL資料庫(kù)。
為了要使用Java來(lái)進(jìn)行連線,首先您所需要的是當(dāng)然是JDBC驅(qū)動(dòng)程式,如果您不知道如何使用JDBC,請(qǐng)先參考這邊有關(guān)於JDBC的介紹:
http://www.caterpillar.onlyfun.net/phpBB2/viewforum.php?f=21
接下來(lái)請(qǐng)?jiān)赑roxool網(wǎng)址上取得proxool-0.8.3.zip這個(gè)檔案,解開(kāi)後,將lib下的proxool-0.8.3.jar放至
您的 CLASSPATH可以存取的位置,如果是Web應(yīng)用程式的話,您可以放置在WEB/lib目錄下,如果是桌面應(yīng)用程式,您可以將之加入環(huán)境變數(shù)
CLASSPATH中。
要使用Proxool,首先是載入Proxool驅(qū)動(dòng)程式:
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
接著我們?cè)谕高^(guò)DriverManager取得連線時(shí),必須告知連接池別名、JDBC驅(qū)動(dòng)程式、JDBC URL等相關(guān)訊息:
Connection conn =
DriverManager.getConnection("proxool.example:com.mysql.jdbc.Driver:jdbc:mysql:,
"caterpillar",
"123456");
其中example是連接池的別名(alias),是一個(gè)用來(lái)參考至連接池的名稱,取得連接,接下來(lái)就按照J(rèn)DBC的操作來(lái)使用即可,在不使用連線的時(shí)候,可以關(guān)閉它將連線放回連接池。
下面這個(gè)程式是個(gè)簡(jiǎn)單測(cè)試Proxool連線取得的範(fàn)例:
import java.sql.*;
public class DBTest {
static {
try {
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
}
catch(ClassNotFoundException e) {
System.out.println("找不到驅(qū)動(dòng)程式類別");
e.printStackTrace();
}
}
publicstatic void main(String[] args) {
try {
Connection conn = DriverManager.getConnection(
"proxool.example:com.mysql.jdbc.Driver:jdbc:mysql:,
"caterpillar", "123456");
if(!conn.isClosed())
System.out.println("資料庫(kù)連線測(cè)試成功!");
conn.close();
}
catch(SQLException e) {
e.printStackTrace();
}
}
}