一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

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

 昵稱(chēng)21365845 2015-06-16


一、C3P0下載

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

  

  下載完成之后得到一個(gè)壓縮包

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

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

復(fù)制代碼
 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"/>
復(fù)制代碼

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

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

  2、username=>user

  3、url=>jdbcUrl

  4、driverClassName=>driverClass

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

  

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

  

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

  

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

復(fù)制代碼
 1 <Context>
 2     <!-- 使用C3P0配置針對(duì)MySQL數(shù)據(jù)庫(kù)的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配置針對(duì)Oracle數(shù)據(jù)庫(kù)的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配置針對(duì)SQLServer數(shù)據(jù)庫(kù)的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>
復(fù)制代碼

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

復(fù)制代碼
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5" 
 3     xmlns="http://java./xml/ns/javaee" 
 4     xmlns:xsi="http://www./2001/XMLSchema-instance" 
 5     xsi:schemaLocation="http://java./xml/ns/javaee 
 6     http://java./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:表示引用資源的名稱(chēng)
14   · res-type:此資源對(duì)應(yīng)的類(lèi)型為javax.sql.DataSource
15   · res-auth:容器授權(quán)管理
16    -->
17    <!--Oracle數(shù)據(jù)庫(kù)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ù)庫(kù)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ù)庫(kù)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>
復(fù)制代碼

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

  

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

  

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

  jsp測(cè)試頁(yè)面如下:

復(fù)制代碼
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%--引入JSTL標(biāo)簽庫(kù) --%>
 3 <%@ taglib uri="http://java./jsp/jstl/core" prefix="c"%>
 4 <%@ taglib uri="http://java./jsp/jstl/sql" prefix="sql"%>
 5 <!DOCTYPE HTML>
 6 <html>
 7   <head>
 8     <title>C3P0配置JNDI數(shù)據(jù)源連接測(cè)試</title>
 9   </head>
10   
11   <body>
12         <h3>針對(duì)MySQL數(shù)據(jù)庫(kù)JNDI數(shù)據(jù)源測(cè)試</h3>
13         <%--使用sql:query標(biāo)簽發(fā)送SQL語(yǔ)句去數(shù)據(jù)庫(kù)查詢數(shù)據(jù),查詢的結(jié)果集保存到rs變量當(dāng)中,dataSource屬性指明使用的數(shù)據(jù)源--%>
14         <sql:query var="rs" dataSource="jdbc/MysqlDataSource">
15             <%--MySQL JNDI數(shù)據(jù)源測(cè)試 SQL--%>
16              select * from ld_user
17         </sql:query>
18         <%--使用c:forEach標(biāo)簽遍歷查詢結(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>針對(duì)Oracle數(shù)據(jù)庫(kù)JNDI數(shù)據(jù)源測(cè)試</h3>
25           <%--使用sql:query標(biāo)簽發(fā)送SQL語(yǔ)句去數(shù)據(jù)庫(kù)查詢數(shù)據(jù),查詢的結(jié)果集保存到rs變量當(dāng)中,dataSource屬性指明使用的數(shù)據(jù)源--%>
26         <sql:query var="rs" dataSource="jdbc/OracleDataSource">
27             <%--Oracle JNDI數(shù)據(jù)源測(cè)試 SQL--%>
28             SELECT * FROM LEAD_OAMS_DBSOURCES
29         </sql:query>
30         <%--使用c:forEach標(biāo)簽遍歷查詢結(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>
復(fù)制代碼

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    中文字幕日韩欧美一区| 91偷拍视频久久精品| 综合久综合久综合久久| 日韩亚洲激情在线观看| 精品国产成人av一区二区三区| 美国女大兵激情豪放视频播放 | 国产精品久久久久久久久久久痴汉| 国产精品视频一区麻豆专区| 欧美日韩国产精品第五页| 亚洲熟女精品一区二区成人| 日韩高清一区二区三区四区| 九九热视频经典在线观看| 午夜色午夜视频之日本| 九九蜜桃视频香蕉视频| 亚洲av日韩av高潮无打码| 人妻少妇系列中文字幕| 欧美亚洲91在线视频| 九九热在线免费在线观看| 91精品视频全国免费| 亚洲欧美日本国产不卡| 精品国自产拍天天青青草原| 日韩不卡一区二区三区色图| 91播色在线免费播放| 日本av在线不卡一区| 国产精品一区二区三区欧美| 丰满人妻一二区二区三区av| 夫妻激情视频一区二区三区| 国内九一激情白浆发布| 男人把女人操得嗷嗷叫| 精品人妻一区二区三区免费| 大胆裸体写真一区二区| 熟女中文字幕一区二区三区| 精品国产品国语在线不卡| 成人午夜视频精品一区| 日韩一级欧美一级久久| 精品国产亚洲免费91| 老司机亚洲精品一区二区| 大胆裸体写真一区二区| 亚洲男人的天堂就去爱| 麻豆国产精品一区二区三区| 国产成人午夜福利片片|