日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

      首頁西西教程數(shù)據(jù)庫教程 → Tomcat數(shù)據(jù)庫連接池的配置方法總結(jié)

      Tomcat數(shù)據(jù)庫連接池的配置方法總結(jié)

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時(shí)間:2013/4/4 18:58:40字體大小:A-A+

      作者:西西點(diǎn)擊:1次評論:0次標(biāo)簽: Tomcat

      • 類型:編程輔助大。3.6M語言:中文 評分:7.5
      • 標(biāo)簽:
      立即下載

      數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這在多用戶網(wǎng)頁應(yīng)用程序中體現(xiàn)的尤為突出.對數(shù)據(jù)庫連接的管理能顯著影響到整個(gè)應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo),數(shù)據(jù)庫連接池正是針對這個(gè)問題提出的.

      數(shù)據(jù)庫連接池負(fù)責(zé)分配,管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個(gè);釋放空閑時(shí)間超過最大空閑時(shí)間的數(shù)據(jù)庫連接來避免因?yàn)闆]有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏,這樣可以明顯提高對數(shù)據(jù)庫操作的性能.

      數(shù)據(jù)庫連接池在初始化的時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是又最小數(shù)據(jù)庫連接數(shù)來設(shè)定的,無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù),當(dāng)應(yīng)用程序向連接池請求的連接數(shù)超過最大連接數(shù)量時(shí),這些請求將被加入到等待隊(duì)列中.

      數(shù)據(jù)庫連接池的最小連接數(shù)和最大連接數(shù)的設(shè)置要考慮到下列幾個(gè)因素:

      1.最小連接數(shù)是連接池一直保持的數(shù)據(jù)庫連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫連接的使用量不大,將會有大量的數(shù)據(jù)庫連接資源被浪費(fèi).

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

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

      實(shí)例使用的Tomcat版本為6.0

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

      <?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數(shù)據(jù)庫的連接池-->
          <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數(shù)據(jù)庫的連接池, 
              需要做的額外步驟是將mysql的Java驅(qū)動類放到tomcat的lib目錄下        
              maxIdle 連接池中最多可空閑maxIdle個(gè)連接 
              minIdle 連接池中最少空閑maxIdle個(gè)連接 
              initialSize 初始化連接數(shù)目 
              maxWait 連接池中連接用完時(shí),新的請求等待時(shí)間,毫秒 
              username 數(shù)據(jù)庫用戶名
              password 數(shù)據(jù)庫密碼
              -->
          <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>

      配置好后需要注意的兩個(gè)步驟

      1.將對應(yīng)數(shù)據(jù)庫的驅(qū)動類放到tomcat的lib目錄西安

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

      在web應(yīng)用程序的web.xml中設(shè)置數(shù)據(jù)源參考,如下:

      在<web-app></web-app>節(jié)點(diǎn)中加入下面內(nèi)容

      <resource-ref>

            <description>mysql數(shù)據(jù)庫連接池</description>
            <!-- 參考數(shù)據(jù)源名字,同Tomcat中配置的Resource節(jié)點(diǎn)中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.要去檢查下配置文件中連接數(shù)據(jù)庫的URL參數(shù)是否正確2.以及是否導(dǎo)入了正常的包3.檢查在Tomcat中conf/server.xml文件,檢查是否設(shè)置useNaming="false",如果是,去掉

      2.那就是通過main方法測試的,這個(gè)數(shù)據(jù)源不支持這樣的測試方法,程序要運(yùn)行在Tomcat中才能找到相應(yīng)的數(shù)據(jù)源.[我在測試時(shí)犯這樣的錯導(dǎo)致上面錯誤出現(xiàn)]

      <%@ 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連接池測試,獲取數(shù)據(jù)源 <br>     
          <%     
              try {      
                  //初始化查找命名空間
                  Context ctx = new InitialContext();  
                  //參數(shù)java:/comp/env為固定路徑   
                  Context envContext = (Context)ctx.lookup("java:/comp/env"); 
                  //參數(shù)jdbc/mysqlds為數(shù)據(jù)源和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>   

      運(yùn)行效果:

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

      打開tomcat的conf/server.xml文件,找到<GlobalNamingResources></GlobalNamingResources>節(jié)點(diǎn),默認(rèn)的內(nèi)容如下

      <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>

      在該節(jié)點(diǎn)中加入相關(guān)的池配置信息,如下

        <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數(shù)據(jù)庫的連接池, 
                      需要做的額外步驟是將mysql的Java驅(qū)動類放到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>節(jié)點(diǎn)中加入如下內(nèi)容

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

      然后在web項(xiàng)目中的WEB-INF目錄下的web.xml中配置

      <resource-ref>

            <description>mysql數(shù)據(jù)庫連接池</description>
            <!-- 參考數(shù)據(jù)源名字,同Tomcat中配置的Resource節(jié)點(diǎn)中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>

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

      方法三:在Tomcat的conf/server.xml中配置虛擬目錄時(shí)配置 

      在配置虛擬目錄時(shí),也就是在配置conf下面的server.xml時(shí),在context標(biāo)簽內(nèi)添加池配置.

      在說該方法之前,先說一下,如何用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要改成你的項(xiàng)目目錄。

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

      reloadable設(shè)置為true。  

      這樣重新啟動tomcat

      實(shí)例中如下配置

      <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>

      啟動服務(wù)器,測試,注意因?yàn)槲覀兣渲昧藀ath值為”/website”,所以訪問的路徑應(yīng)該為website.如下圖:

      方法四:在Web項(xiàng)目中的META-INF目錄下新建一個(gè)文件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>

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)