博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
阅读量:4022 次
发布时间:2019-05-24

本文共 3277 字,大约阅读时间需要 10 分钟。

一、C3P0下载

  C3P0下载地址:

  

  下载完成之后得到一个压缩包

二、使用C3P0配置JNDI数据源

  Tomcat6.x中配置JNDI数据源时默认使用的是Tomcat6.x自带的DBCP连接池,Tomcat6.x使用DBCP连接池配置JNDI数据源如下:

1 

  如果想让Tomcat6.x使用C3P0连接池配置JNDI数据源,在配置时,以下配置项需要修改

  1、 type和factory的值发生变化

  2、username=>user

  3、url=>jdbcUrl

  4、driverClassName=>driverClass

  创建一个Web测试项目C3P0_JNDI_Config,解压压缩包,找到c3p0-0.9.5-pre9\lib目录下的相关Jar包如下图所示:

  

  将C3P0的相关Jar包添加到项目中,在项目的META-INF目录下创建一个context.xml文件,目录结构如下图所示:

  

  在tomcat服务器的lib目录下添加Oracle、MySQL、SQLServer三种数据库的驱动jar包,如下图所示:

  

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

1 
2
3
16 17
18
31 32 33
34
47

  2.在web.xml引用JDNI数据源:

1 
2
7
8
index.jsp
9
10 11
17
18
19
Oracle DB Connection
20
jdbc/OracleDataSource
21
javax.sql.DataSource
22
Container
23
24 25
26
27
MySQL DB Connection
28
jdbc/MysqlDataSource
29
javax.sql.DataSource
30
Container
31
32 33
34
35
SQLServer DB Connection
36
jdbc/SqlServerDataSource
37
javax.sql.DataSource
38
Container
39
40 41

  3.部署C3P0_JNDI_Config Web应用到Tomcat服务器测试JNDI数据源

  

  部署到tomcat服务器的webapps目录之后,tomcat服务器就会自动在\conf\Catalina\localhost目录下生成一个C3P0_JNDI_Config.xml文件,如下图所示:

  

  C3P0_JNDI_Config.xml文件中的内容就是我们在META-INF目录的context.xml文件中配置的那些内容。

  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  6  7    8     C3P0配置JNDI数据源连接测试 9   10   11   12         

针对MySQL数据库JNDI数据源测试

13 <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>14
15 <%--MySQL JNDI数据源测试 SQL--%>16 select * from ld_user17
18 <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>19
20 <%--${row.字段名}获取字段的值--%>21 ${row.id}---${row.username}---${row.password}
22
23

24

针对Oracle数据库JNDI数据源测试

25 <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>26
27 <%--Oracle JNDI数据源测试 SQL--%>28 SELECT * FROM LEAD_OAMS_DBSOURCES29
30 <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>31
32 <%--${row.字段名}获取字段的值--%>33 ${row.RESOURCEID}---${row.DBSOURCE_NAME}---${row.DBSOURCE_TYPE}
34
35

36 37

 C3P0 自动重连相关参数

     idleConnectionTestPeriod:C3P0会有一个Task检测pool内的连接是否正常,此参数就是Task运行的频率。默认值为0,表示不进行检测
    acquireRetryAttempts:pool请求取新连接失败后重试的次数
     C3P0目前存在问题:
     当数据库重启后,C3P0不会自动重新初始化数据库连接池,当新的请求需要访问数据库的时候,此时回报错误(因为数据库重启,连接失效),同时刷新数据库连接池,丢弃掉已经失效的连接,当第二个请求到来时恢复正常。
  C3P0目前没有提供当获取已建立连接失败后重试次数的参数,只有获取新连接失败后重试次数的参数(acquireRetryAttempts )。
要解决此问题,可以通过设置idleConnectionTestPeriod 参数折中解决,该参数的作用是设置系统自动检查连接池中连接是否正常的一个频率参数,时间单位是秒。

转载地址:http://ypfbi.baihongyu.com/

你可能感兴趣的文章
[互联网学习]如何提高网站的GooglePR值
查看>>
[关注大学生]求职不可不知——怎样的大学生不受欢迎
查看>>
[关注大学生]读“贫困大学生的自白”
查看>>
[互联网关注]李开复教大学生回答如何学好编程
查看>>
[关注大学生]李开复给中国计算机系大学生的7点建议
查看>>
[关注大学生]大学毕业生择业:是当"鸡头"还是"凤尾"?
查看>>
[茶余饭后]10大毕业生必听得歌曲
查看>>
gdb调试命令的三种调试方式和简单命令介绍
查看>>
C++程序员的几种境界
查看>>
VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
查看>>
VUE-Vue.js之$refs,父组件访问、修改子组件中 的数据
查看>>
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>
性能调优之iftop命令详解
查看>>
非关系型数据库(nosql)介绍
查看>>
移动端自动化测试-Windows-Android-Appium环境搭建
查看>>
Xpath使用方法
查看>>