您当前的位置: 首页 >  tomcat

科技D人生

暂无认证

  • 1浏览

    0关注

    1550博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JNDI学习总结(3)——Tomcat下使用C3P0配置JNDI数据源

科技D人生 发布时间:2016-01-05 14:01:05 ,浏览量:1

一、C3P0下载

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

  

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

二、使用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 
 2 
 3 
 4 
 5 DOCTYPE HTML>
 6 
 7   
 8     C3P0配置JNDI数据源连接测试
 9   
10   
11   
12         针对MySQL数据库JNDI数据源测试
13         
14         
15             
16              select * from ld_user
17         
18         
19         
20             
21             ${row.id}---${row.username}---${row.password}
22         
23         
24         针对Oracle数据库JNDI数据源测试
25           
26         
27             
28             SELECT * FROM LEAD_OAMS_DBSOURCES
29         
30         
31         
32             
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 参数折中解决,该参数的作用是设置系统自动检查连接池中连接是否正常的一个频率参数,时间单位是秒。

关注
打赏
1662604032
查看更多评论
立即登录/注册

微信扫码登录

0.2584s