【转】JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源

http://www.cuomi.com/html/content/15/0616/13/21365845_478507521.shtml

 

 

com.alibaba.druid.pool.DruidDataSourceFactory完成了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置。

一、下载Druid的jar包

  下载地址:http://mvnrepository.com/artifact/com.alibaba/druid/1.0.9,如下图所示:

  

  druid.jar依赖log4j的jar包,所以还需求下载log4j的jar包。

  log4j的下载地址如下:http://mvnrepository.com/artifact/log4j/log4j/1.2.17,如下图所示:

  

二、运用Druid配置JNDI数据源

2.1、前期预备工作

  创建一个Web测试项目Druid_JNDI_Config,将下载上去druid-1.0.9.jar和log4j-1.2.17.jar添加到项目中,在项目的META-INF目录下创建一个context.xml文件

  目录结构如下图所示:

  

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

  

2.2、在context.xml文件中加入JNDI的配置信息

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

复制代码
 1 <Context>
 2     <!-- 运用阿里巴巴的DruidDataSource配置针对Oracle数据库的JNDI数据源 -->
 3     <Resource 
 4         name="jdbc/OracleDataSource"
 5         factory="com.alibaba.druid.pool.DruidDataSourceFactory"
 6         auth="Container"
 7         type="javax.sql.DataSource"
 8         driverClassName="oracle.jdbc.OracleDriver"
 9         url="jdbc:oracle:thin:@192.168.1.229:1521:lead"
10         username="lead_oams"
11         password="p"
12         maxActive="50"
13         maxWait="10000"
14         removeabandoned="true"
15         removeabandonedtimeout="60"
16         logabandoned="false"
17         filters="stat"/>
18         
19     <!-- 运用阿里巴巴的DruidDataSource配置针对MySQL数据库的JNDI数据源 -->
20      <Resource 
21         name="jdbc/MysqlDataSource"
22         factory="com.alibaba.druid.pool.DruidDataSourceFactory"
23         auth="Container"
24         type="javax.sql.DataSource"
25         driverClassName="com.mysql.jdbc.Driver"
26         url="jdbc:mysql://192.168.1.233:3306/lead_oams?useUnicode=true&amp;characterEncoding=utf-8"
27         username="lead_system"
28         password="password"
29         maxActive="50"
30         maxWait="10000"
31         removeabandoned="true"
32         removeabandonedtimeout="60"
33         logabandoned="false"
34         filters="stat"/>
35         
36     <!--运用阿里巴巴的DruidDataSource配置针对SQLServer数据库的JNDI数据源-->
37     <Resource 
38         name="jdbc/SqlServerDataSource"
39         auth="Container"
40         factory="com.alibaba.druid.pool.DruidDataSourceFactory" 
41         type="javax.sql.DataSource"
42         driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
43         url="jdbc:sqlserver://192.168.1.61:1433;DatabaseName=gaclTest"
44         username="sa" 
45         password="p@ssw0rd"
46         maxActive="50"
47         maxWait="10000"
48         removeabandoned="true"
49         removeabandonedtimeout="60"
50         logabandoned="false"
51         filters="stat"/>
52 </Context>
复制代码

   配置项中指定了各个参数后,在连接池内部是这么运用这些参数的。数据库连接池在初始化的时分会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在运用的连接数等于maxActive,则会等待一段工夫,等待其他操作释放掉某一个连接,如果这个等待工夫超过了maxWait,则会报错;如果当前正在运用的连接数没有达到maxActive,则判断当前能否空闲连接,如果有则直接运用空闲连接,如果没有则新建立一个连接。在连接运用终了后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。同时连接池内部无机制判断,如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle。如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis工夫后任然没有运用,则被物理性的关闭掉。有些数据库连接的时分有超时限制(mysql连接在8小时后断开),或者由于网络中缀等缘由,连接池的连接会出现失效的情况,这时分设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。当然,为了保证绝对的可用性,你也可以运用testOnBorrow为true(即在获取Connection对象时检测其可用性),
不过这样会影响功能。

2.3、在web.xml援用JDNI数据源

  在web.xml文件中加入如下的配置援用JNDI数据源

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5" 
 3     xmlns="http://java.sun.com/xml/ns/javaee" 
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 6     http://java.sun.com/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:表示援用资源的名称
14   · res-type:此资源对应的类型为javax.sql.DataSource
15   · res-auth:容器授权管理
16    -->
17    <!--Oracle数据库JNDI数据源援用 -->
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值