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

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

系統 1808 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
          
          
            >
          
        

運行效果:

?

[Z]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.如下圖:

[Z]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
          
          
            >
          
          ?
        

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美另类国产 | 99精品中文字幕 | 国产精品免费一区二区三区 | 国产视频最新 | 亚洲图片国产日韩欧美 | 国产成人免费不卡在线观看 | 在线观看亚洲精品专区 | 婷婷久| 免费观看四虎精品国产永久 | 亚洲欧美日韩国产色另类 | 久久69精品久久久久久hb | 国产成人精品亚洲日本在线 | 亚洲综合精品成人啪啪 | 曰韩一级片 | 国产精品久久香蕉免费播放 | 国产精品成人不卡在线观看 | 来自深渊在线观看 | 日本不卡在线一区二区三区视频 | 九九热九九热 | 五月天色区 | 啊用力嗯快国产在线观看 | 中国一级特黄高清免费的大片 | 欧美美女一区 | 国产成人亚洲综合一区 | 亚洲精品免费在线观看 | 亚洲视频一区 | 久久www视频| 午夜成年人网站 | 久久综合九色综合欧美狠狠 | 中国jizz18免费 | 久久精品国产欧美日韩亚洲 | 老子影院午夜伦手机不四虎 | www色网站| 老子影院午夜伦手机不卡无 | 免费黄色毛片 | 久久久久综合网久久 | 国产成a人亚洲精v品久久网 | 图片区亚洲 | 亚洲第一视频在线播放 | 四虎国产精品永久地址99新强 | 日韩特级毛片免费观看视频 |