1. 程式人生 > >以oracle資料庫為例配置Tomcat伺服器JNDI資料庫連線池

以oracle資料庫為例配置Tomcat伺服器JNDI資料庫連線池

前兩天學習了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的配置就結束了。