以oracle資料庫為例配置Tomcat伺服器JNDI資料庫連線池
阿新 • • 發佈:2019-01-10
前兩天學習了tomcat的JNDI資料庫連線池的配置,今天重新自己檢視tomcat的官方英語文件再配置一遍,加深印象。
首先JNDI(Java Naming and Directory Interface,Java命名和目錄介面)是一組在Java應用中訪問命名和目錄服務的API。使用者可以根據需要按照相應的配置取得對應需要的服務。
我們知道,如果每次程式訪問資料庫建立一個連線,是很消耗資料庫的資源的,當訪問使用者多了,這個問題更是顯而易見。資料庫連線池就是為資料庫連線建立一個緩衝池,裡面存有一定數量的資料庫連線,當我們的程式需要連線資料庫時,就直接從緩衝池中拿取,而不需要每次都與資料庫進行連線,這樣節省了記憶體的消耗也加快了建立連線的速度。
接下來我們就來配置一下。
首先我們開啟tomcat關於JNDI配置的文件地址,如果你沒有刪除tomcat/webapps目錄下自帶的5個案例的話。
首先第一步:
Install Your JDBC Driver。安裝驅動:installing the driver's JAR file(s) into the $CATALINA_HOME/lib directory。基本意思就是說把你的資料庫驅動放在tomcat目錄下的lib資料夾下。我用的是oracle,所有我把oracle資料庫驅動ojdbc14.jar 直接拷貝在資料夾下的lib資料夾下。
接下來第二步官方文件說:
Declare Your Resource Requirements。宣告你的資源請求:官方文件要我們這麼配置:
<resource-ref> <description> Resource reference to a factory for java.sql.Connection instances that may be used for talking to a particular database that is configured in the <Context> configurartion for the web application. </description> <res-ref-name> jdbc/EmployeeDB </res-ref-name> <res-type> javax.sql.DataSource </res-type> <res-auth> Container </res-auth> </resource-ref>
按照要求,我是這麼配置的:
第三步官方文件:
Code Your Application's Use Of This Resource。 編碼,以使用你的資源,簡單的就是修改你的dao層的取得連結程式碼。官方文件給出的配置是這樣的:Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
envCtx.lookup("jdbc/EmployeeDB");
Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();
我是這麼配置的:
最後一步:
Configure Tomcat's Resource Factory 。也就是配置tomcat。我們需要配置的是Tomcat目錄下的conf資料夾下的context.xml 官方給出的配置是這樣的:<Context ...>
...
<Resource name="jdbc/EmployeeDB"
auth="Container"
type="javax.sql.DataSource"
username="dbusername"
password="dbpassword"
driverClassName="org.hsql.jdbcDriver"
url="jdbc:HypersonicSQL:database"
maxActive="8"
maxIdle="4"/>
...
</Context>
同樣,我們修改我們需要的引數:
我們將官方修改的這段加入context.xml中。我們需要注意幾個引數:
username和password就是你資料庫的使用者名稱密碼。
maxIdle:最大空閒數,資料庫連線的最大空閒時間。超過空閒時間,資料庫連線將被標記為不可用,然後被釋放。設為0表示無限制。MaxActive:連線池的最大資料庫連線數。設為0表示無限制。
至此,JNDI的配置就結束了。