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

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

  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 参数折中解决,该参数的作用是设置系统自动检查连接池中连接是否正常的一个频率参数,时间单位是秒。

转载于:https://www.cnblogs.com/xyzq/p/6014767.html

你可能感兴趣的文章
[Ogre][地形][原创]基于OgreTerrain的地形实现
查看>>
shell登录模式及其相应配置文件(转)
查看>>
Puppet常识梳理
查看>>
web.config配置文件中的configSource属性
查看>>
发现一个国内牛逼的maven仓库,速度真的太快了
查看>>
Snmp配置
查看>>
使用java实现CNN的实战
查看>>
大白话系列之C#委托与事件讲解(二)
查看>>
linux下使用 du查看某个文件或目录占用磁盘空间的大小
查看>>
iCheck表单美化插件使用方法详解(含参数、事件等)
查看>>
IOS UIAlertController 使用方法
查看>>
MySQL存储过程 事务transaction
查看>>
93. [NOIP2001] 数的划分
查看>>
c++友元实现操作符重载
查看>>
LeetCode_Maximum Depth of Binary Tree
查看>>
MongoDB入门学习(一):MongoDB的安装和管理
查看>>
beans.factory.BeanCreationException beans.factory.annotation.Autowired(required=true)
查看>>
grep常见使用方法总结
查看>>
视频云的选型调研
查看>>
MySQL 性能调优的10个方法
查看>>