數(shù)據庫連接池的解決方案是在應用程序啟動時建立足夠的數(shù)據庫連接,并將這些連接組成一個連接池,由應用程序動態(tài)的對池中的連接進行申請,使用和釋放。
? JDBC 3.0規(guī)范中提供了一個支持數(shù)據庫連接池的框架,這個框架僅僅規(guī)定了如何支持連接池的實現(xiàn),而連接池的具體實現(xiàn)JDBC 3.0規(guī)范并沒有做相關的規(guī)定。
? JDBC 3.0規(guī)范定義了如下的類和接口來支持數(shù)據庫連接池的實現(xiàn)。
?● javax.sql.ConnectionEvent: 連接事件
?● javax.sql.ConnectionPoolDataSource: 連接池數(shù)據源
● javax.sql.PooledConnection: 被池化的連接
●javax.sql.ConnectionEventListener: 連接事件監(jiān)聽接口
?? DataSource接口代表了數(shù)據源,它一般由數(shù)據庫驅動廠商實現(xiàn)。通過這個接口來獲得一個連接,它的主要方法如下:
?★ getConnection(): 獲得一個Connection物件
★ getConnection(String username,String password): 獲得一個Connection物件
★getLongWriter(): 從DataSource獲得Long Writer對象,它是Print Writer的實現(xiàn)
★setLogWriter(PrintWriter out):設置DataSource的LogWriter
★setLoginTime():獲得DataSource嘗試連接數(shù)據庫的最大時間
★setLoginTimeout(int seconds): 設置DataSource嘗試連接數(shù)據的最大時間
如下是在Tomcat 5中配置數(shù)據源:
?? 在Tomcat的%Tomcat_Home%/conf/server.xml里的</Context></Host>前增加如下的描述:
<Context path="/MyRoot" docBase="MyRoot" debug="0"
??????????????? reloadable="true" crossContext="true">
??????????????? <Resource name="jdbc/bn" auth="Container" type="javax.sql.DataSource"/>
??????????????? <ResourceParams name="jdbc/bn">
??????????????? <parameter>
?????????????????? <name>factory</name>
?????????????????? <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
??????????????? </parameter>
??????????????? <parameter>
?????????????????? <name>username</name>
?????????????????? <value>bn</value>
??????????????? </parameter>
??????????????? <parameter>
?????????????????? <name>password</name>
?????????????????? <value>bn</value>
??????????????? </parameter>
??????????????? <parameter>
?????????????????? <name>maxActive</name>
?????????????????? <value>20</value>
??????????????? </parameter>
??????????????? <parameter>
?????????????????? <name>maxIdle</name>
?????????????????? <value>10</value>
??????????????? </parameter>
??????????????? <parameter>
?????????????????? <name>maxWait</name>
?????????????????? <value>-1</value>
??????????????? </parameter>
??????????????? </ResourceParams>
</Context>