亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Tomcat數據庫連接池的配置方法總結

系統 1816 0

數據庫連接是一種關鍵的有限的昂貴的資源 , 這在多用戶網頁應用程序中體現的尤為突出 . 對數據庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性 , 影響到程序的性能指標 , 數據庫連接池正是針對這個問題提出的

?

數據庫連接池負責分配 , 管理和釋放數據庫連接 , 它允許應用程序重復使用一個現有的數據庫連接 , 而不是再重新建立一個 ; 釋放空閑時間超過最大空閑時間的數據庫連接來避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏 , 這樣可以明顯提高對數據庫操作的性能

?

數據庫連接池在初始化的時將創建一定數量的數據庫連接放到連接池中 , 這些數據庫連接的數量是又最小數據庫連接數來設定的 , 無論這些數據庫連接是否被使用 , 連接池都將一直保證至少擁有這么多的連接數 , 當應用程序向連接池請求的連接數超過最大連接數量時 , 這些請求將被加入到等待隊列中 .

數據庫連接池的最小連接數和最大連接數的設置要考慮到下列幾個因素 :

1. 最小連接數是連接池一直保持的數據庫連接 , 所以如果應用程序對數據庫連接的使用量不大 , 將會有大量的數據庫連接資源被浪費 .

2. 最大連接數是連接池申請的最大連接數 , 如果數據庫連接請求超過次數 , 后面的數據庫連接請求將被加入到等待對了中 , 這回影響之后的數據庫操作

如果最小連接數與最大連接數相差太大 , 那么最先的連接請求將會獲利 , 之后超過最小連接數量的連接請求等價于建立一個新的數據庫連接 , 不過 , 這些小于最小連接數的數據庫連接在使用完不會馬上被釋放 , 它將被放到連接池中等待重復使用或是空閑超時被釋放 .

實例使用的 Tomcat 版本為 6.0

方法一 :? Tomcat conf/context.xml 中配置
Tomcat\apache-tomcat-6.0.33\conf 目錄下的 context.xml 文件中配置 默認值如下:

      
        <?
      
      
        xml version='1.0' encoding='utf-8'
      
      
        ?>
      
      
        <
      
      
        Context
      
      
        >
      
      
        <
      
      
        WatchedResource
      
      
        >
      
      WEB-INF/web.xml
      
        </
      
      
        WatchedResource
      
      
        >
      
      
        </
      
      
        Context
      
      
        >
      
    

配置連接池

      
        <?
      
      
        xml version='1.0' encoding='utf-8'
      
      
        ?>
      
      
        <
      
      
        Context
      
      
        >
      
      
        <
      
      
        WatchedResource
      
      
        >
      
      WEB-INF/web.xml
      
        </
      
      
        WatchedResource
      
      
        >
      
      
        <!--
      
      
        配置oracle數據庫的連接池
      
      
        -->
      
      
        <
      
      
        Resource 
      
      
        name
      
      
        ="jdbc/oracleds"
      
      
        

        author
      
      
        ="Container"
      
      
        

        type
      
      
        ="javax.sql.DataSource"
      
      
        

        maxActive
      
      
        ="100"
      
      
        

        maxIdle
      
      
        ="30"
      
      
        

        maxWait
      
      
        ="10000"
      
      
        

        username
      
      
        ="scott"
      
      
        

        password
      
      
        ="tiger"
      
      
        

        driverClassName
      
      
        ="oracle.jdbc.dirver.OracleDriver"
      
      
        

        url
      
      
        ="jdbc:oracle:thin:@127.0.0.1:1521:ora9"
      
      
        />
      
      
        <!--
      
      
        配置mysql數據庫的連接池, 

        需要做的額外步驟是將mysql的Java驅動類放到tomcat的lib目錄下        

        maxIdle 連接池中最多可空閑maxIdle個連接 

        minIdle 連接池中最少空閑maxIdle個連接 

        initialSize 初始化連接數目 

        maxWait 連接池中連接用完時,新的請求等待時間,毫秒 

        username 數據庫用戶名

        password 數據庫密碼

        
      
      
        -->
      
      
        <
      
      
        Resource 
      
      
        name
      
      
        ="jdbc/mysqlds"
      
      
         

        auth
      
      
        ="Container"
      
      
         

        type
      
      
        ="javax.sql.DataSource"
      
      
         

        username
      
      
        ="root"
      
      
         

        password
      
      
        ="root"
      
      
         

        maxIdle
      
      
        ="30"
      
      
         

        maxWait
      
      
        ="10000"
      
      
         

        maxActive
      
      
        ="100"
      
      
        

        driverClassName
      
      
        ="com.mysql.jdbc.Driver"
      
      
        

        url
      
      
        ="jdbc:mysql://127.0.0.1:3306/db_blog"
      
      
        />
      
      
        </
      
      
        Context
      
      
        >
      
    

配置好后需要注意的兩個步驟

1. 將對應數據庫的驅動類放到 tomcat lib 目錄西安

2. 重新啟動 tomcat 服務器 , 讓配置生效

web 應用程序的 web.xml 中設置數據源參考 , 如下:

<web-app></web-app> 節點 中加入下面內容

      
        <
      
      
        resource-ref
      
      
        >
      
      
        <
      
      
        description
      
      
        >
      
      mysql數據庫連接池
      
        </
      
      
        description
      
      
        >
      
      
        <!--
      
      
         參考數據源名字,同Tomcat中配置的Resource節點中name屬性值"jdbc/mysqlds"一致 
      
      
        -->
      
      
        <
      
      
        res-ref-name
      
      
        >
      
      jdbc/mysqlds
      
        </
      
      
        res-ref-name
      
      
        >
      
      
        <!--
      
      
         資源類型 
      
      
        -->
      
      
        <
      
      
        res-type
      
      
        >
      
      javax.sql.DataSource
      
        </
      
      
        res-type
      
      
        >
      
      
        <
      
      
        res-auth
      
      
        >
      
      Container
      
        </
      
      
        res-auth
      
      
        >
      
      
        <
      
      
        res-sharing-scope
      
      
        >
      
      Shareable
      
        </
      
      
        res-sharing-scope
      
      
        >
      
      
        </
      
      
        resource-ref
      
      
        >
      
    

?

錯誤解決

      
        javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)

    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)

    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)

    at javax.naming.InitialContext.lookup(InitialContext.java:392)

    at com.iblog.util.DBPoolUtil.
      
      
        <
      
      
        clinit
      
      
        >
      
      (DBPoolUtil.java:34)
    

解決方案:

上面的異常信息是配置文件中JNDI沒有初始化造成的

如果下面的問題都不存在

1.要去檢查下配置文件中連接數據庫的URL參數是否正確 2.以及是否導入了正常的包 3.檢查在Tomcat中conf/server.xml文件,檢查是 否設置useNaming="false",如果是,去掉

2.那就是通過 main方法測試的,這個數據源不支持這樣的測試方法,程序要運行在 Tomcat中才能找到相應的數據源 .[我在測試時犯這樣的錯導致上面錯誤出現]

      <%@ page language="java"  pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>     

<%@ page 
      
        import
      
      ="java.sql.*" %>     

<%@ page 
      
        import
      
      ="javax.naming.*" %>     

<%@ page 
      
        import
      
      ="javax.sql.DataSource" %>

<html>     

<head>     

<title>Tomcat6.0 JNDI!</title>    

</head>    

  <body>
      
              

   Tomcat連接池測試,獲取數據源 
      
      <br>     

    <%     

        
      
        try
      
      
         {      

            
      
      
        //
      
      
        初始化查找命名空間
      
      

            Context ctx = 
      
        new
      
      
         InitialContext();  

            
      
      
        //
      
      
        參數java:/comp/env為固定路徑   
      
      

            Context envContext = (Context)ctx.lookup("java:/comp/env"
      
        ); 

            
      
      
        //
      
      
        參數jdbc/mysqlds為數據源和JNDI綁定的名字
      
      

            DataSource ds = (DataSource)envContext.lookup("jdbc/mysqlds"
      
        ); 

            Connection conn 
      
      =
      
         ds.getConnection();     

            conn.close();     

            out.println(
      
      "<span style='color:red;'>JNDI測試成功<span>"
      
        );     

        } 
      
      
        catch
      
      
         (NamingException e) {     

            e.printStackTrace();     

        } 
      
      
        catch
      
      
         (SQLException e) {     

            e.printStackTrace();     

        }     

    
      
      %>     

  </body>     

</html>   
    

運行效果:

?

Tomcat數據庫連接池的配置方法總結

?

?

方法二 : Tomcat conf/ server.xml 中配置

打開 tomcat conf/server.xml 文件,找到 <GlobalNamingResources></GlobalNamingResources> 節點 , 默認的內容如下

      
        <
      
      
        GlobalNamingResources
      
      
        >
      
      
        <
      
      
        Resource 
      
      
        name
      
      
        ="UserDatabase"
      
      
         auth
      
      
        ="Container"
      
      
        

              type
      
      
        ="org.apache.catalina.UserDatabase"
      
      
        

              description
      
      
        ="User database that can be updated and saved"
      
      
        

              factory
      
      
        ="org.apache.catalina.users.MemoryUserDatabaseFactory"
      
      
        

              pathname
      
      
        ="conf/tomcat-users.xml"
      
      
        />
      
      
        </
      
      
        GlobalNamingResources
      
      
        >
      
    

在該節點中加入相關的池配置信息,如下

      
        <
      
      
        GlobalNamingResources
      
      
        >
      
      
        <
      
      
        Resource 
      
      
        name
      
      
        ="UserDatabase"
      
      
         auth
      
      
        ="Container"
      
      
        

              type
      
      
        ="org.apache.catalina.UserDatabase"
      
      
        

              description
      
      
        ="User database that can be updated and saved"
      
      
        

              factory
      
      
        ="org.apache.catalina.users.MemoryUserDatabaseFactory"
      
      
        

              pathname
      
      
        ="conf/tomcat-users.xml"
      
      
        />
      
      
        <!--
      
      
        配置mysql數據庫的連接池, 

                需要做的額外步驟是將mysql的Java驅動類放到tomcat的lib目錄下        

               
      
      
        -->
      
      
        <
      
      
        Resource 
      
      
        name
      
      
        ="jdbc/mysqlds"
      
      
         

              auth
      
      
        ="Container"
      
      
         

              type
      
      
        ="javax.sql.DataSource"
      
      
         

              username
      
      
        ="root"
      
      
         

              password
      
      
        ="root"
      
      
         

              maxIdle
      
      
        ="30"
      
      
         

              maxWait
      
      
        ="10000"
      
      
         

              maxActive
      
      
        ="100"
      
      
        

              driverClassName
      
      
        ="com.mysql.jdbc.Driver"
      
      
        

              url
      
      
        ="jdbc:mysql://127.0.0.1:3306/db_blog"
      
      
        />
      
      
        </
      
      
        GlobalNamingResources
      
      
        >
      
    

tomcat conf/context.xml 文件中的 <Context></Context> 節點中加入如下內容

      
        <
      
      
        ResourceLink 
      
      
        name
      
      
        ="jdbc/mysqlds"
      
      
         global
      
      
        ="jdbc/mysqlds"
      
      
         type
      
      
        ="javax.sql.DataSource"
      
      
        />
      
    

然后在 web 項目中的 WEB-INF 目錄下的 web.xml 中配置

      
        <
      
      
        resource-ref
      
      
        >
      
      
        <
      
      
        description
      
      
        >
      
      mysql數據庫連接池
      
        </
      
      
        description
      
      
        >
      
      
        <!--
      
      
         參考數據源名字,同Tomcat中配置的Resource節點中name屬性值"jdbc/mysqlds"一致 
      
      
        -->
      
      
        <
      
      
        res-ref-name
      
      
        >
      
      jdbc/mysqlds
      
        </
      
      
        res-ref-name
      
      
        >
      
      
        <!--
      
      
         資源類型 
      
      
        -->
      
      
        <
      
      
        res-type
      
      
        >
      
      javax.sql.DataSource
      
        </
      
      
        res-type
      
      
        >
      
      
        <
      
      
        res-auth
      
      
        >
      
      Container
      
        </
      
      
        res-auth
      
      
        >
      
      
        <
      
      
        res-sharing-scope
      
      
        >
      
      Shareable
      
        </
      
      
        res-sharing-scope
      
      
        >
      
      
        </
      
      
        resource-ref
      
      
        >
      
    

同樣配置好后,需要重新啟動服務器,讓配置生效.

?

?

?

方法三 : Tomcat conf/server.xml 中配置虛擬目錄時配置 ?

在配置虛擬目錄時,也就是在配置 conf 下面的 server.xml , context 標簽內 添加池配置 .

在說該方法之前 , 先說一下 , 如何用 tomcat 配置虛擬目錄

tomcat\conf server.xml 中找到

      
        <
      
      
        Host 
      
      
        name
      
      
        ="localhost"
      
      
          appBase
      
      
        ="webapps"
      
      
        

            unpackWARs
      
      
        ="true"
      
      
         autoDeploy
      
      
        ="true"
      
      
        

            xmlValidation
      
      
        ="false"
      
      
         xmlNamespaceAware
      
      
        ="false"
      
      
        >
      
      
        </
      
      
        Host
      
      
        >
      
    

在其中添加:

      
        <
      
      
        Context 
      
      
        path
      
      
        ="/website"
      
      
         docBase
      
      
        ="F:/myweb"
      
      
         reloadable
      
      
        ="true"
      
      
        ></
      
      
        Context
      
      
        >
      
    

注意 :

docBase 要改成你的項目目錄。

path 為虛擬路徑 , 訪問時的路徑,注意 : 一定要加 “/”? debug 建議設置為 0

reloadable 設置為 true 。??

這樣重新啟動 tomcat

實例中如下配置

      
        <
      
      
        Context 
      
      
        path
      
      
        ="/website"
      
      
         docBase
      
      
        ="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war"
      
      
         reloadable
      
      
        ="true"
      
      
        >
      
      
        </
      
      
        Context
      
      
        >
      
    

接下來添加池配置 , 如下

      
        <!--
      
      
        配置虛擬目錄
      
      
        -->
      
      
        <
      
      
        Context 
      
      
        path
      
      
        ="/website"
      
      
         docBase
      
      
        ="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war"
      
      
         reloadable
      
      
        ="true"
      
      
        >
      
      
        <
      
      
        Resource 
      
      
        name
      
      
        ="jdbc/mysqlds"
      
      
         

            auth
      
      
        ="Container"
      
      
         

            type
      
      
        ="javax.sql.DataSource"
      
      
         

            username
      
      
        ="root"
      
      
         

            password
      
      
        ="root"
      
      
         

            maxIdle
      
      
        ="30"
      
      
         

            maxWait
      
      
        ="10000"
      
      
         

            maxActive
      
      
        ="100"
      
      
        

            driverClassName
      
      
        ="com.mysql.jdbc.Driver"
      
      
        

            url
      
      
        ="jdbc:mysql://127.0.0.1:3306/db_blog"
      
      
        />
      
      
        </
      
      
        Context
      
      
        >
      
    

啟動服務器 , 測試 , 注意因為我們配置了 path 值為 /website , 所以訪問的路徑應該為 website. 如下圖:

Tomcat數據庫連接池的配置方法總結

?

方法四:在 Web 項目中的 META-INF 目錄下新建一個文件 context.xml, 寫入配置

注意 : META-INF 目錄下 , 不是 WEB-INF 目錄下

      
        <?
      
      
        xml version='1.0' encoding='utf-8'
      
      
        ?>
      
      
        <
      
      
        Context
      
      
        >
      
      
        <
      
      
        Resource 
      
      
        name
      
      
        ="jdbc/mysqlds"
      
      
         

        auth
      
      
        ="Container"
      
      
         

        type
      
      
        ="javax.sql.DataSource"
      
      
         

        username
      
      
        ="root"
      
      
         

        password
      
      
        ="root"
      
      
         

        maxIdle
      
      
        ="30"
      
      
         

        maxWait
      
      
        ="10000"
      
      
         

        maxActive
      
      
        ="100"
      
      
        

        driverClassName
      
      
        ="com.mysql.jdbc.Driver"
      
      
        

        url
      
      
        ="jdbc:mysql://127.0.0.1:3306/db_blog"
      
      
        

        logAbandoned
      
      
        ="true"
      
      
        />
      
      
        </
      
      
        Context
      
      
        >
      
    

?

轉載請注明出處:[ http://www.cnblogs.com/dennisit/archive/2013/04/04/2999657.html ]

在線交談

Tomcat數據庫連接池的配置方法總結


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品久| 欧美骚视频| 久久99久久99精品免观看不卡 | 无遮挡一级毛片性视频不卡 | 欧美国产精品 | 欧美激情精品久久久久久不卡 | 香蕉tv亚洲专区在线观看 | 国产成人综合亚洲欧美在 | 欧美freesex呦交6_10 | 成人国产一区二区三区 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 夜夜骑日日| 毛片免费视频播放 | 国产一久久香蕉国产线看观看 | 国产亚洲精品国看不卡 | 四虎在线最新永久免费 | 精品精品国产欧美在线观看 | 国产成人一区二区三区免费观看 | 国产成人禁片免费观看视频 | 欧美乱码 | 国内精品手机在线观看视频 | 亚洲免费片 | 欧美一级网址 | 一区二区三区在线 | 9热在线精品视频观看 | 国产成人a一区二区 | 久久这里一区二区精品 | 伊人中文字幕在线 | 五月在线视频 | 老子不卡影院 | 国产精品久久在线观看 | 国产女主播喷出白浆视频 | 午夜久久久久久久 | 国产精品麻豆高清在线观看 | 亚洲欧美成人中文在线网站 | 男人都懂的网址 | 久久综合伊人 | 国产永久地址 | 中文字幕在线影院 | 亚洲精品综合欧美一区二区三区 | 在线人成精品免费视频 |