一、C3P0下載二、使用C3P0配置JNDI數(shù)據(jù)源
Tomcat6.x中配置JNDI數(shù)據(jù)源時(shí)默認(rèn)使用的是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ù)源,在配置時(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文件中加入如下配置信息 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> 2.在web.xml引用JDNI數(shù)據(jù)源: 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> 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è)面如下: 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> C3P0 自動(dòng)重連相關(guān)參數(shù) |
|
來(lái)自: 昵稱(chēng)21365845 > 《JNDI》