日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

JNDI學習總結(jié)(二)——Tomcat下使用C3P0配置JNDI

系統(tǒng) 1995 0

一、C3P0下載

  C3P0下載地址: http://sourceforge.net/projects/c3p0/files/?source=navbar

  下載完成之后得到一個壓縮包

二、使用C3P0配置JNDI數(shù)據(jù)源

  Tomcat6.x中配置JNDI數(shù)據(jù)源時默認使用的是Tomcat6.x自帶的DBCP連接池,Tomcat6.x使用DBCP連接池配置JNDI數(shù)據(jù)源如下:

      
         1
      
      
        <
      
      
        Resource 


      
      
         2
      
      
        name
      
      
        ="oracleDataSource"
      
      
         3
      
      
            auth
      
      
        ="Container"
      
      
         4
      
      
            type
      
      
        ="javax.sql.DataSource"
      
      
         5
      
      
            maxActive
      
      
        ="50"
      
      
         6
      
      
            maxIdle
      
      
        ="10"
      
      
         7
      
      
            maxWait
      
      
        ="10000"
      
      
         8
      
      
            username
      
      
        ="lead_oams"
      
      
         9
      
      
            password
      
      
        ="p"
      
      
        10
      
      
            driverClassName
      
      
        ="oracle.jdbc.OracleDriver"
      
      
        11
      
      
            url
      
      
        ="jdbc:oracle:thin:@192.168.1.229:1521:lead"
      
      
        />
      
    

  如果想讓Tomcat6.x使用C3P0連接池配置JNDI數(shù)據(jù)源,在配置時,以下配置項需要修改

  1、 type和factory的值發(fā)生變化

  2、username=>user

  3、url=>jdbcUrl

  4、driverClassName=>driverClass

  創(chuàng)建一個Web測試項目C3P0_JNDI_Config,解壓 壓縮包,找到c3p0-0.9.5-pre9\lib目錄下的相關(guān)Jar包如下圖所示:

  將C3P0的相關(guān)Jar包添加到項目中,在項目的META-INF目錄下創(chuàng)建一個context.xml文件,目錄結(jié)構(gòu)如下圖所示:

  在tomcat服務(wù)器的lib目錄下添加Oracle、MySQL、SQLServer三種數(shù)據(jù)庫的驅(qū)動jar包,如下圖所示:

  1、在context.xml文件中加入如下配置信息

      
         1
      
      
        <
      
      
        Context
      
      
        >
      
      
         2
      
      
        <!--
      
      
         使用C3P0配置針對MySQL數(shù)據(jù)庫的JNDI數(shù)據(jù)源 
      
      
        -->
      
      
         3
      
      
        <
      
      
        Resource 


      
      
         4
      
      
        name
      
      
        ="jdbc/MysqlDataSource"
      
      
         5
      
      
                auth
      
      
        ="Container"
      
      
         6
      
      
                factory
      
      
        ="org.apache.naming.factory.BeanFactory"
      
      
         7
      
      
                type
      
      
        ="com.mchange.v2.c3p0.ComboPooledDataSource"
      
      
         8
      
      
                driverClass
      
      
        ="com.mysql.jdbc.Driver"
      
      
         9
      
      
                idleConnectionTestPeriod
      
      
        ="60"
      
      
        10
      
      
                maxPoolSize
      
      
        ="50"
      
      
        11
      
      
                minPoolSize
      
      
        ="2"
      
      
        12
      
      
                acquireIncrement
      
      
        ="2"
      
      
        13
      
      
                user
      
      
        ="root"
      
      
        14
      
      
                password
      
      
        ="root"
      
      
        15
      
      
                jdbcUrl
      
      
        ="jdbc:mysql://192.168.1.144:3306/leadtest"
      
      
        />
      
      
        16
      
      
        17
      
      
        <!--
      
      
         使用C3P0配置針對Oracle數(shù)據(jù)庫的JNDI數(shù)據(jù)源 
      
      
        -->
      
      
        18
      
      
        <
      
      
        Resource 


      
      
        19
      
      
        name
      
      
        ="jdbc/OracleDataSource"
      
      
        20
      
      
                auth
      
      
        ="Container"
      
      
        21
      
      
                factory
      
      
        ="org.apache.naming.factory.BeanFactory"
      
      
        22
      
      
                type
      
      
        ="com.mchange.v2.c3p0.ComboPooledDataSource"
      
      
        23
      
      
                driverClass
      
      
        ="oracle.jdbc.OracleDriver"
      
      
        24
      
      
                idleConnectionTestPeriod
      
      
        ="60"
      
      
        25
      
      
                maxPoolSize
      
      
        ="50"
      
      
        26
      
      
                minPoolSize
      
      
        ="2"
      
      
        27
      
      
                acquireIncrement
      
      
        ="2"
      
      
        28
      
      
                jdbcUrl
      
      
        ="jdbc:oracle:thin:@192.168.1.229:1521:lead"
      
      
        29
      
      
                user
      
      
        ="lead_oams"
      
      
        30
      
      
                password
      
      
        ="p"
      
      
        />
      
      
        31
      
      
        32
      
      
        33
      
      
        <!--
      
      
        使用C3P0配置針對SQLServer數(shù)據(jù)庫的JNDI數(shù)據(jù)源
      
      
        -->
      
      
        34
      
      
        <
      
      
        Resource 


      
      
        35
      
      
        name
      
      
        ="jdbc/SqlServerDataSource"
      
      
        36
      
      
                auth
      
      
        ="Container"
      
      
        37
      
      
                factory
      
      
        ="org.apache.naming.factory.BeanFactory"
      
      
        38
      
      
                type
      
      
        ="com.mchange.v2.c3p0.ComboPooledDataSource"
      
      
        39
      
      
                driverClass
      
      
        ="com.microsoft.sqlserver.jdbc.SQLServerDriver"
      
      
        40
      
      
                idleConnectionTestPeriod
      
      
        ="60"
      
      
        41
      
      
                maxPoolSize
      
      
        ="50"
      
      
        42
      
      
                minPoolSize
      
      
        ="2"
      
      
        43
      
      
                acquireIncrement
      
      
        ="2"
      
      
        44
      
      
                jdbcUrl
      
      
        ="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"
      
      
        45
      
      
                user
      
      
        ="sa"
      
      
        46
      
      
                password
      
      
        ="p@ssw0rd"
      
      
        />
      
      
        47
      
      
        </
      
      
        Context
      
      
        >
      
    

  2.在web.xml引用JDNI數(shù)據(jù)源:

      
         1
      
      
        <?
      
      
        xml version="1.0" encoding="UTF-8"
      
      
        ?>
      
      
         2
      
      
        <
      
      
        web-app 
      
      
        version
      
      
        ="2.5"
      
      
         3
      
      
            xmlns
      
      
        ="http://java.sun.com/xml/ns/javaee"
      
      
         4
      
      
            xmlns:xsi
      
      
        ="http://www.w3.org/2001/XMLSchema-instance"
      
      
         5
      
      
            xsi:schemaLocation
      
      
        ="http://java.sun.com/xml/ns/javaee 


      
      
         6
      
      
            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      
      
        >
      
      
         7
      
      
        <
      
      
        welcome-file-list
      
      
        >
      
      
         8
      
      
        <
      
      
        welcome-file
      
      
        >
      
      index.jsp
      
        </
      
      
        welcome-file
      
      
        >
      
      
         9
      
      
        </
      
      
        welcome-file-list
      
      
        >
      
      
        10
      
      
        11
      
      
        <!--
      
      
        12
      
      
              JNDI配置的資源引用:


      
      
        13
      
      
          ? res-ref-name:表示引用資源的名稱


      
      
        14
      
      
          ? res-type:此資源對應(yīng)的類型為javax.sql.DataSource


      
      
        15
      
      
          ? res-auth:容器授權(quán)管理


      
      
        16
      
      
        -->
      
      
        17
      
      
        <!--
      
      
        Oracle數(shù)據(jù)庫JNDI數(shù)據(jù)源引用 
      
      
        -->
      
      
        18
      
      
        <
      
      
        resource-ref
      
      
        >
      
      
        19
      
      
        <
      
      
        description
      
      
        >
      
      Oracle DB Connection
      
        </
      
      
        description
      
      
        >
      
      
        20
      
      
        <
      
      
        res-ref-name
      
      
        >
      
      jdbc/OracleDataSource
      
        </
      
      
        res-ref-name
      
      
        >
      
      
        21
      
      
        <
      
      
        res-type
      
      
        >
      
      javax.sql.DataSource
      
        </
      
      
        res-type
      
      
        >
      
      
        22
      
      
        <
      
      
        res-auth
      
      
        >
      
      Container
      
        </
      
      
        res-auth
      
      
        >
      
      
        23
      
      
        </
      
      
        resource-ref
      
      
        >
      
      
        24
      
      
        25
      
      
        <!--
      
      
        MySQL數(shù)據(jù)庫JNDI數(shù)據(jù) 
      
      
        -->
      
      
        26
      
      
        <
      
      
        resource-ref
      
      
        >
      
      
        27
      
      
        <
      
      
        description
      
      
        >
      
      MySQL DB Connection
      
        </
      
      
        description
      
      
        >
      
      
        28
      
      
        <
      
      
        res-ref-name
      
      
        >
      
      jdbc/MysqlDataSource
      
        </
      
      
        res-ref-name
      
      
        >
      
      
        29
      
      
        <
      
      
        res-type
      
      
        >
      
      javax.sql.DataSource
      
        </
      
      
        res-type
      
      
        >
      
      
        30
      
      
        <
      
      
        res-auth
      
      
        >
      
      Container
      
        </
      
      
        res-auth
      
      
        >
      
      
        31
      
      
        </
      
      
        resource-ref
      
      
        >
      
      
        32
      
      
        33
      
      
        <!--
      
      
        SQLServer數(shù)據(jù)庫JNDI數(shù)據(jù)源引用 
      
      
        -->
      
      
        34
      
      
        <
      
      
        resource-ref
      
      
        >
      
      
        35
      
      
        <
      
      
        description
      
      
        >
      
      SQLServer DB Connection
      
        </
      
      
        description
      
      
        >
      
      
        36
      
      
        <
      
      
        res-ref-name
      
      
        >
      
      jdbc/SqlServerDataSource
      
        </
      
      
        res-ref-name
      
      
        >
      
      
        37
      
      
        <
      
      
        res-type
      
      
        >
      
      javax.sql.DataSource
      
        </
      
      
        res-type
      
      
        >
      
      
        38
      
      
        <
      
      
        res-auth
      
      
        >
      
      Container
      
        </
      
      
        res-auth
      
      
        >
      
      
        39
      
      
        </
      
      
        resource-ref
      
      
        >
      
      
        40
      
      
        41
      
      
        </
      
      
        web-app
      
      
        >
      
    

  3.部署C3P0_JNDI_Config Web應(yīng)用到Tomcat服務(wù)器測試JNDI數(shù)據(jù)源

  部署到tomcat服務(wù)器的webapps目錄之后,tomcat服務(wù)器就會自動在\conf\Catalina\localhost目錄下生成一個C3P0_JNDI_Config.xml文件,如下圖所示:

  C3P0_JNDI_Config.xml文件中的內(nèi)容就是我們在META-INF目錄的context.xml文件中配置的那些內(nèi)容。

  jsp測試頁面如下:

      
         1
      
      
        <%
      
      
        @ page language
      
      
        =
      
      
        "
      
      
        java
      
      
        "
      
      
         import
      
      
        =
      
      
        "
      
      
        java.util.*
      
      
        "
      
      
         pageEncoding
      
      
        =
      
      
        "
      
      
        UTF-8
      
      
        "
      
      
        %>
      
      
         2
      
      
        <%
      
      
        --
      
      
        引入JSTL標簽庫 
      
      
        --
      
      
        %>
      
      
         3
      
      
        <%
      
      
        @ taglib uri
      
      
        =
      
      
        "
      
      
        http://java.sun.com/jsp/jstl/core
      
      
        "
      
      
         prefix
      
      
        =
      
      
        "
      
      
        c
      
      
        "
      
      
        %>
      
      
         4
      
      
        <%
      
      
        @ taglib uri
      
      
        =
      
      
        "
      
      
        http://java.sun.com/jsp/jstl/sql
      
      
        "
      
      
         prefix
      
      
        =
      
      
        "
      
      
        sql
      
      
        "
      
      
        %>
      
      
         5
      
      
        <!
      
      
        DOCTYPE HTML
      
      
        >
      
      
         6
      
      
        <
      
      
        html
      
      
        >
      
      
         7
      
      
        <
      
      
        head
      
      
        >
      
      
         8
      
      
        <
      
      
        title
      
      
        >
      
      C3P0配置JNDI數(shù)據(jù)源連接測試
      
        </
      
      
        title
      
      
        >
      
      
         9
      
      
        </
      
      
        head
      
      
        >
      
      
        10
      
      
        11
      
      
        <
      
      
        body
      
      
        >
      
      
        12
      
      
        <
      
      
        h3
      
      
        >
      
      針對MySQL數(shù)據(jù)庫JNDI數(shù)據(jù)源測試
      
        </
      
      
        h3
      
      
        >
      
      
        13
      
      
        <%
      
      
        --
      
      
        使用sql:query標簽發(fā)送SQL語句去數(shù)據(jù)庫查詢數(shù)據(jù),查詢的結(jié)果集保存到rs變量當中,dataSource屬性指明使用的數(shù)據(jù)源
      
      
        --
      
      
        %>
      
      
        14
      
      
        <
      
      
        sql:query 
      
      
        var
      
      
        ="rs"
      
      
         dataSource
      
      
        ="jdbc/MysqlDataSource"
      
      
        >
      
      
        15
      
      
        <%
      
      
        --
      
      
        MySQL JNDI數(shù)據(jù)源測試 SQL
      
      
        --
      
      
        %>
      
      
        16
      
      
                     select * from ld_user


      
      
        17
      
      
        </
      
      
        sql:query
      
      
        >
      
      
        18
      
      
        <%
      
      
        --
      
      
        使用c:forEach標簽遍歷查詢結(jié)果集rs中的每一行
      
      
        --
      
      
        %>
      
      
        19
      
      
        <
      
      
        c:forEach 
      
      
        var
      
      
        ="row"
      
      
         items
      
      
        ="${rs.rows}"
      
      
        >
      
      
        20
      
      
        <%
      
      
        --
      
      
        ${row.字段名}獲取字段的值
      
      
        --
      
      
        %>
      
      
        21
      
                   ${row.id}---${row.username}---${row.password}
      
        <
      
      
        br
      
      
        />
      
      
        22
      
      
        </
      
      
        c:forEach
      
      
        >
      
      
        23
      
      
        <
      
      
        hr
      
      
        />
      
      
        24
      
      
        <
      
      
        h3
      
      
        >
      
      針對Oracle數(shù)據(jù)庫JNDI數(shù)據(jù)源測試
      
        </
      
      
        h3
      
      
        >
      
      
        25
      
      
        <%
      
      
        --
      
      
        使用sql:query標簽發(fā)送SQL語句去數(shù)據(jù)庫查詢數(shù)據(jù),查詢的結(jié)果集保存到rs變量當中,dataSource屬性指明使用的數(shù)據(jù)源
      
      
        --
      
      
        %>
      
      
        26
      
      
        <
      
      
        sql:query 
      
      
        var
      
      
        ="rs"
      
      
         dataSource
      
      
        ="jdbc/OracleDataSource"
      
      
        >
      
      
        27
      
      
        <%
      
      
        --
      
      
        Oracle JNDI數(shù)據(jù)源測試 SQL
      
      
        --
      
      
        %>
      
      
        28
      
      
                    SELECT * FROM LEAD_OAMS_DBSOURCES


      
      
        29
      
      
        </
      
      
        sql:query
      
      
        >
      
      
        30
      
      
        <%
      
      
        --
      
      
        使用c:forEach標簽遍歷查詢結(jié)果集rs中的每一行
      
      
        --
      
      
        %>
      
      
        31
      
      
        <
      
      
        c:forEach 
      
      
        var
      
      
        ="row"
      
      
         items
      
      
        ="${rs.rows}"
      
      
        >
      
      
        32
      
      
        <%
      
      
        --
      
      
        ${row.字段名}獲取字段的值
      
      
        --
      
      
        %>
      
      
        33
      
                   ${row.RESOURCEID}---${row.DBSOURCE_NAME}---${row.DBSOURCE_TYPE}
      
        <
      
      
        br
      
      
        />
      
      
        34
      
      
        </
      
      
        c:forEach
      
      
        >
      
      
        35
      
      
        <
      
      
        hr
      
      
        />
      
      
        36
      
      
        </
      
      
        body
      
      
        >
      
      
        37
      
      
        </
      
      
        html
      
      
        >
      
    

?C3P0 自動重連相關(guān)參數(shù)
???? idleConnectionTestPeriod:C3P0會有一個Task檢測pool內(nèi)的連接是否正常,此參數(shù)就是Task運行的頻率。默認值為0,表示不進行檢測
??? acquireRetryAttempts:pool請求取 新連接 失敗后重試的次數(shù)
???? C3P0目前存在問題:
???? 當數(shù)據(jù)庫重啟后,C3P0不會自動重新初始化數(shù)據(jù)庫連接池,當新的請求需要訪問數(shù)據(jù)庫的時候,此時回報錯誤(因為數(shù)據(jù)庫重啟,連接失效),同時刷新數(shù)據(jù)庫連接池,丟棄掉已經(jīng)失效的連接,當?shù)诙€請求到來時恢復(fù)正常。
  C3P0目前沒有提供當獲取已建立連接失敗后重試次數(shù)的參數(shù),只有獲取新連接失敗后重試次數(shù)的參數(shù)(acquireRetryAttempts )。
要解決此問題,可以通過設(shè)置idleConnectionTestPeriod 參數(shù)折中解決,該參數(shù)的作用是設(shè)置系統(tǒng)自動檢查連接池中連接是否正常的一個頻率參數(shù),時間單位是秒。

JNDI學習總結(jié)(二)——Tomcat下使用C3P0配置JNDI數(shù)據(jù)源


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 揭东县| 鹤岗市| 镇安县| 贞丰县| 嘉义县| 图片| 贡山| 昌吉市| 科技| 崇文区| 百色市| 东海县| 军事| 苍梧县| 浦东新区| 绿春县| 桃源县| 文成县| 哈密市| 临沂市| 扬州市| 桑日县| 赣榆县| 辰溪县| 怀集县| 简阳市| 轮台县| 舟曲县| 玛纳斯县| 鱼台县| 瑞金市| 石棉县| 梁山县| 绥棱县| 漾濞| 黄大仙区| 白朗县| 新民市| 邵阳市| 大名县| 上饶县|