1. 程式人生 > >tomcat配置jdbc連線池

tomcat配置jdbc連線池

1.為什麼要使用jdbc連線池呢

        使用jdbc連線資料庫時,drivermanager得到資料庫連線物件需要與資料庫進行多次認證,影響到了應用系統的效能,那麼我們應當儘量減少不停建立新的資料庫連線,接著,連線池這個概念就來了。

2.這個連線池是個什麼東東呢?

        首先,上面提到我們要儘量減少與資料庫的連線操作,當然,連線是肯定要建立的,為什麼不預先建立多個連線,然後用一個物件統一管理呢?然後大家一起使用,需要的時候,直接向那個物件(DataSource)要就行了。

3.連線池相關名詞解釋

最小連線數:這個是datasource物件始終與資料庫保持連線的數量,當小於這個數量的連線請求時,
連線池的高效率就體現出來了,不用建立新的連線,直接引用就行。

最大連線數:當請求連線數量大於最小連線數時,多出的部分會建立新的連線,如果再多一點,大於了最大連線數,那麼請求會被阻塞,放在請求佇列裡等待。

最大空閒等待時間:資料庫的斷開並不是由開發人員控制的,當一個數據庫連線空閒時,
其資源並不會馬上釋放,他會等待被複用直到超過最大空閒等待時間後釋放。

4.在哪配置呢?

        在這裡,我們用的java ee 伺服器是tomcat,因此,我們找到它的配置檔案%tomcathome%\conf\context.xml,配置相應地resource標籤。

5.如何配置

context.xml:

<!-- 資料庫環境為mysql5.7 -->
<Context>
<!-- 資料來源名,datasource物件繫結到本地命名服務的名字-->
<Resource name="oa_mysqld"
<!-- 指定Container容器負責驗證-->
            auth="Container"
            <!--指定資料庫連線池管理器,預設是javax.sql.DataSource-->
            type="javax.sql.DataSource"
            <!-- 指定資料庫連線使用者名稱,密碼-->
            username="root"
            password="root"
            <!-- 最大連線數-->
            maxIdle="30"
            <!-- 最大空閒等待-->
            maxWait="10000"
            <!-- 最大連線數-->
            maxActive="100"
            <!--指定jdbc驅動名-->
            driverClassName="com.mysql.jdbc.Driver"
            <!--資料庫url-->
            url="jdbc:mysql://127.0.0.1:3306/oa" />
</Context>

ps:需要將jdbc連線驅動放在tomcat的lib目錄下。

6.資料庫連線池測試

tomcat伺服器中預設的命名服務註冊名為:java:comp/env/+“配置名”
try {      
            //初始化查詢名稱空間
            Context ctx = new InitialContext();  
            //引數java:/comp/env為固定路徑  
            DataSource ds = (DataSource)ctx.lookup("java:/comp/env/oa_mysqld"); 
            Connection conn = ds.getConnection();     
           //業務邏輯 
            out.println("連線成功");     
        } catch (NamingException e) {     
            e.printStackTrace();     
        } catch (SQLException e) {     
            e.printStackTrace();     
        }