研究了Proxool連接池的源代碼後完成下面的程序Proxool連接池的配置過程略
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492540.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492572.gif)
/**//*
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
*@author 我為J狂 建立日期
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
*
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492509.gif)
*/
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
package net
blogjava
lzqdiy;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
import
URL;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
import java
sql
*;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
import org
logicalcobwebs
proxool
ProxoolException;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
import org
logicalcobwebs
proxool
ProxoolFacade;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
import org
logicanfiguration
JAXPConfigurator;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
import org
logicalcobwebs
proxool
admin
SnapshotIF;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
public class DBConnection
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492540.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492572.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
private static boolean initialized = false;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
private static int activeCount =
;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
public static Connection getConnection() throws SQLException
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
Connection connection = null;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
if (!initialized)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
init();
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
connection = DriverManager
getConnection(
proxool
Develop
);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
try
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
SnapshotIF snapshot = ProxoolFacade
getSnapshot(
Develop
true);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
int curActiveCount = snapshot
getActiveConnectionCount();// 獲得活動連接數
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
int availableCount = snapshot
getAvailableConnectionCount();// 獲得可得到的連接數
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
int maxCount = snapshot
getMaximumConnectionCount();// 獲得總連接數
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
if (curActiveCount != activeCount)// 當活動連接數變化時輸出信息
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
System
out
println(
);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
System
out
println(curActiveCount +
(active)
+ availableCount
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
+
(available)
+ maxCount +
(max)
);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
System
out
println(
);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
activeCount = curActiveCount;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
} catch (ProxoolException e)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
// TODO Auto
generated catch block
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
e
printStackTrace();
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
if (connection != null)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
return connection;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
} else
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
throw new NullPointerException(
Didn
t get connection
which probably means that no Driver accepted the URL
);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
private static void init()
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
String fileName =
proxool
xml
;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
URL resourceURL = null;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
try
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
if (Thread
currentThread()
getContextClassLoader() != null)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
resourceURL = Thread
currentThread()
getContextClassLoader()
getResource(fileName);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
if (resourceURL == null)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
resourceURL = DBConnection
class
getClassLoader()
getResource(
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
fileName);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
nfigure(resourceURL
getFile()
false);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
Class
forName(
org
logicalcobwebs
proxool
ProxoolDriver
);
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
} catch (ClassNotFoundException e)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
// TODO Auto
generated catch block
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
e
printStackTrace();
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
} catch (ProxoolException e)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492552.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492525.gif)
{
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
// TODO Auto
generated catch block
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
e
printStackTrace();
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492504.gif)
initialized = true;
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492532.gif)
}
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492509.gif)
}
proxoolxml內容
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<?xml version=
encoding=
UTF
?>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<something
else
entirely>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<proxool>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<alias>Develop</alias>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<driver
url>jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=
)(PORT=
)))(CONNECT_DATA=(SID=lzqdiy)(SERVER=DEDICATED)))
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
</driver
url>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<driver
class>oracle
jdbc
driver
OracleDriver</driver
class>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<driver
properties>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<property name=
user
value=
lzqdiy
/>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<property name=
password
value=
lzqdiy
/>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
</driver
properties>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<maximum
connection
count>
</maximum
connection
count>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<minimum
connection
count>
</minimum
connection
count>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
<house
keeping
test
sql>select CURRENT_DATE</house
keeping
test
sql>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
</proxool>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
</something
else
entirely>
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112318492589.gif)
通過語句
Connection con=DBConnection
getConnection();來獲得一個數據庫連接
當活動連接數變化時向控制台輸出連接信息
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25800.html