定義JNDI資料來源的方法如下:
內容提要:
1、介紹
2、資料連線池的配置
3、不使用串連池的解決方案
4、Oracle資料來源配置舉例
一、總體介紹 Introdution
配置JNDI資料來源是配置JNDI資源的一個特例,過程和方法都差不多..
請注意:在Tomcat 5.0.x 和 Tomcat 5.5.x版本之間,JNDI資源的配置已經發生了變化,所以,如果你使用的是以上版本需要修改一下配置文法..
本文假定你已經理解了Context和Host的配置,如果沒有,請自行學習..
二、資料連線池的配置 Database Connection Pool(DBCP) Configurations
DBCP提供了對JDBC2.0的支援,如果你使用的1.4版本JVM,DBCP將支援JDBC3.0..
2.1 安裝 Installation
DBCP使用Jakarta-Commons Database Connection Pool,它依賴以下三個包:
Jakarta-Commons DBCP
Jakarta-Commons Collections
Jakarta-Commons Pool
在Tomcat的安裝目錄提供了一個整合的jar包 $CATALINA_HOME/lib/tomcat-dbcp.jar..
三、避免資料連線池泄露 Preventing DB connection pool leaks
顧名思義,資料連線池負責建立和管理資料庫串連.重用一個已經存在的資料連線要比每次都開啟建立(new)一個串連效率高的多..
但串連池通常個問題:一個Web應用程式需要關閉ResultSet's,Statement's,Connections's等資源.如果應用程式關閉資源失敗,就是導致這些資源無法在被重用,即資料連線池泄露.最終如果沒有足夠的有效串連,將導致應用程式串連失敗.
對於這個問題有個解決方案;Jakarta-Commons的DBCP可以通過配置來跟蹤、恢複那些關閉失敗的串連.不但可以恢複,而且還可以產生堆棧軌跡..
為了關閉和重用那個被遺棄的資源,可以在DBCP資料來源的資源配置中加入一下屬性:
removeAbandoned="true"
當有效資料連線低於DBCP設定的時候,就會重用被遺棄的資源..預設是false;
removeAbandonedTimeout="60"
設定被拋棄的資料連線在多少秒之後可以被刪除...預設是300秒.
logAbandoned="true"
如果想要記錄下被拋棄資料連線的堆棧軌跡可以設為true..預設false;
四、Oracle配置舉例
Tomcat只能識別*.jar檔案,如果資料庫驅動為*.zip,則需要修改副檔名為jar..對於Oracle9i應該使用 oracle.jdbc.OracleDriver,因為 oracle.jdbc.driver.OracleDriver 已經不建議使用..將來也不一定支援了..
4.1 配置server.xml
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
username="scott" password="tiger" maxActive="20" maxIdle="10"
maxWait="-1"/>
4.2 配置web.xml
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4.3 程式碼範例
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
//etc.