注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

【原创】3种tomcat配置jndi数据库连接池的方法(DataSource)  

2012-11-13 14:07:12|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。

大致的有以下三种配置方式: 

第一种: 

1在tomcat的conf文件夹下的context.xml配置文件</Context>中加入: 
Xml代码 
  1. <Resource name="jndi/demo"   
  2.                 auth="Container"   
  3.                 type="javax.sql.DataSource"   
  4.                 driverClassName="oracle.jdbc.driver.OracleDriver"   
  5.                 url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"   
  6.                 username="scott"   
  7.                 password="tiger"   
  8.                 maxActive="20"   
  9.                 maxIdle="10"   
  10.                 maxWait="10000"/>  


2在项目的web.xml中加入资源引用: 
Xml代码 
  1. <resource-ref>  
  2.   <description>JNDI DataSource</description>  
  3.   <res-ref-name>jndi/demo</res-ref-name>  
  4.   <res-ref-type>javax.sql.DataSource</res-ref-type>  
  5.   <res-auth>Container</res-auth>  
  6. </resource-ref>  

其中res-ref-name值要和context.xml的name值一致。 



3)jndi测试方法: 
Java代码 
  1. import java.sql.Connection;  
  2. import java.sql.ResultSet;  
  3. import java.sql.SQLException;  
  4. import java.sql.Statement;  
  5. import javax.naming.Context;  
  6. import javax.naming.InitialContext;  
  7. import javax.naming.NamingException;  
  8. import javax.sql.DataSource;  
  9.   
  10. public class TestJNDI{  
  11.       
  12.     public void testJNDI() throws NamingException, SQLException{  
  13.         Context ctx = new InitialContext();  
  14.         DataSource ds = (DataSource) ctx.lookup("java:comp/env/jndi/demo");  
  15.         Connection conn = ds.getConnection();  
  16.         Statement statement = conn.createStatement();  
  17.         ResultSet rs = statement.executeQuery("select * from emp");  
  18.         while(rs.next()){  
  19.             System.out.println(rs.getString(1)+","+rs.getString(2));  
  20.         }  
  21.     }  
  22.       
  23. }  


4)在serlvet或者jsp页面中可以直接调用,注意:要在容器内调用: 
   
Java代码 
  1. TestJNDI.testJNDI();  
  2.    



第二种: 

1)在tomcat的server.xml的<host>标签内,添加: 

Xml代码 
  1. <Context path="/demoJndi" docBase="/demoJndi">  
  2.            <Resource name="jndi/demo"   
  3.                 auth="Container"   
  4.                 type="javax.sql.DataSource"   
  5.                 driverClassName="oracle.jdbc.driver.OracleDriver"   
  6.                 url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"   
  7.                 username="scott"   
  8.                 password="tiger"   
  9.                 maxActive="20"   
  10.                 maxIdle="10"   
  11.                 maxWait="10000"/>  
  12.         </Context>  

其他配置同第一种方式。 


第三种:局部配置。 

1)在项目的META-INFO下面新建context.xml。加入: 

Xml代码 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Context>  
  3.     <Resource name="jndi/demo"   
  4.                 auth="Container"   
  5.                 type="javax.sql.DataSource"   
  6.                 driverClassName="oracle.jdbc.driver.OracleDriver"   
  7.                 url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"   
  8.                 username="scott"   
  9.                 password="tiger"   
  10.                 maxActive="20"   
  11.                 maxIdle="10"   
  12.                 maxWait="10000"/>      
  13. </Context>  

其他配置同第一种方式。 

总结: 
第一种方式依赖tomat,是全局的,而且可以配置多个。 
二三两种不依赖tomcat,是局部的,推荐使用第三种方式.
  评论这张
 
阅读(186)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016