Derby 的設定範例:
<Resource name="jdbc/EmbeddedDerbyDB"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="10"
removeAbandoned="true"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:C:/DerbyDB;create=true"/>
Oracle 的設定範例:
<Resource name="jdbc/ORA"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="10"
removeAbandoned="true"
driverClassName="oracle.jdbc.OracleDriver"
username="oradmin"
password="ora1234"
url="jdbc:oracle:thin:@192.168.100.100:1521:sid"/>
JDBC driver 是透過 java.sql.DriverManager 來管理註冊,而不同的 JDBC driver 只會被 java.sql.DriverManager 的 registerDriver 呼叫註冊一次。所以建議將 JDBC driver 放在 $CATALINA_BASE/lib 路徑下,以免造成 JVM Memory Leak 的問題。正確的 Class Loader 的順序,請參考 Class Loader HOW-TO 文件。
由於 Tomcat 的 DataSource 是採用 Apache Commons 專案中的 DBCP 及 Pool 來實作及管理,所以在 DataSource 的參數設定其實就是 DBCP 的參數設定。而這二個函式庫 DBCP 和 Pool 已經被包裝在單一 JAR 檔 $CATALINA_HOME/lib/tomcat-dbcp.jar 裡,其中 DBCP 1.4 已經支援 JDBC 4.0 規格。
DBCP 的參數設定可以參考網頁的說明,這裡先將比較常用的參數列舉說明一下。
一般基本參數:
參數名稱:username
說明:建立連線用的 username
參數名稱:password
說明:建立連線用的 password
參數名稱:url
說明:JDBC 的 url 字串
參數名稱:driverClassName
說明:JDBC dirver 的完整 class 名稱
常用參數:
參數名稱:maxActive
預設值:8
說明:Connection Pool 同時所能建立的連線最大數量。若為負值,則無上限。
參數名稱:maxIdle
預設值:8
說明:Connection Pool 同時所能允許閒置的連線最大數量。若為負值,則無上限。
參數名稱:validationQuery
預設值:無
說明:用來驗證測試連線是否成功。必須使用 SQL SELECT 語句,並且至少回傳一筆資料。以 Oracle 為例: select 1 from dual 。
參數名稱:removeAbandoned
預設值:false
說明:值為 true 時,當已建立的連線閒置時間超過 removeAbandonedTimout 設定值時,就會將連線棄置及移除。
參數名稱:removeAbandonedTimeout
預設值:300
說明:超過閒置秒數的連線會被移除。
範例程式:
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/ORA");
Connection conn = ds.getConnection();
參考資料:
Tomcat JNDI Datasource HOW-TO
DBCP Configuration
maxActive="100"
maxIdle="10"
removeAbandoned="true"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
url="jdbc:derby:C:/DerbyDB;create=true"/>
Oracle 的設定範例:
<Resource name="jdbc/ORA"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="10"
removeAbandoned="true"
driverClassName="oracle.jdbc.OracleDriver"
username="oradmin"
password="ora1234"
url="jdbc:oracle:thin:@192.168.100.100:1521:sid"/>
JDBC driver 是透過 java.sql.DriverManager 來管理註冊,而不同的 JDBC driver 只會被 java.sql.DriverManager 的 registerDriver 呼叫註冊一次。所以建議將 JDBC driver 放在 $CATALINA_BASE/lib 路徑下,以免造成 JVM Memory Leak 的問題。正確的 Class Loader 的順序,請參考 Class Loader HOW-TO 文件。
由於 Tomcat 的 DataSource 是採用 Apache Commons 專案中的 DBCP 及 Pool 來實作及管理,所以在 DataSource 的參數設定其實就是 DBCP 的參數設定。而這二個函式庫 DBCP 和 Pool 已經被包裝在單一 JAR 檔 $CATALINA_HOME/lib/tomcat-dbcp.jar 裡,其中 DBCP 1.4 已經支援 JDBC 4.0 規格。
DBCP 的參數設定可以參考網頁的說明,這裡先將比較常用的參數列舉說明一下。
一般基本參數:
參數名稱:username
說明:建立連線用的 username
參數名稱:password
說明:建立連線用的 password
參數名稱:url
說明:JDBC 的 url 字串
參數名稱:driverClassName
說明:JDBC dirver 的完整 class 名稱
常用參數:
參數名稱:maxActive
預設值:8
說明:Connection Pool 同時所能建立的連線最大數量。若為負值,則無上限。
參數名稱:maxIdle
預設值:8
說明:Connection Pool 同時所能允許閒置的連線最大數量。若為負值,則無上限。
參數名稱:validationQuery
預設值:無
說明:用來驗證測試連線是否成功。必須使用 SQL SELECT 語句,並且至少回傳一筆資料。以 Oracle 為例: select 1 from dual 。
參數名稱:removeAbandoned
預設值:false
說明:值為 true 時,當已建立的連線閒置時間超過 removeAbandonedTimout 設定值時,就會將連線棄置及移除。
參數名稱:removeAbandonedTimeout
預設值:300
說明:超過閒置秒數的連線會被移除。
範例程式:
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/ORA");
Connection conn = ds.getConnection();
參考資料:
Tomcat JNDI Datasource HOW-TO
DBCP Configuration