Tomcat中使用JNDI加载JDBC数据源

   以前写JDBC的时候总是手工写一个类,用硬代码写上className、url、用户名和密码什么的,然后通过DriverManager获取到Connection。那样写是很方便,但是如果想更改的话,需要修改源码再编译,给后期修改带来不便。最近看到可以使用JNDI的方法使用xml文件配置JDBC数据源,xml文件存放在war下面,这样的话就很方便我们修改jdbc的连接属性了。

  首先了解下JNDI吧,百度搜索结果:JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。拿我的理解就是:服务商提供一个api,然后可以利用JNDI查找到该服务商提供的功能。

  要想在Tomcat下使用JNDI配置数据源,首先得在META-INF目录下创建一个context.xml文件。例如:

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <Context>
 3     <Resource
 4         name="jndi/datasource"  //数据源名称,在JNDI中用到
 5         type="javax.sql.DataSource" // 数据源类型
 6         driverClassName="com.mysql.jdbc.Driver" //驱动名称
 7         url="jdbc:mysql://localhost:3306/database"  //连接数据源的url
 8         username="name"  //数据库用户名
 9         password="pass" //数据库密码
10         maxActive="10" //指定数据库连接池中处于活动状态的数据库连接最大数目,0表示不受限制
11         maxldle="5"   //指定数据库连接池中处于空闲状态的数据库连接的最大数目,0表示不受限制
12         maxWait="80000" //指定数据库连接池中的数据库连接处于空闲状态的最长时间(单位为毫秒),超过这一事件,将会抛出异常。-1表示可以无限期等              待。
13     >
14     
15     </Resource>
16 </Context>

 

数据源配置好了,就开始调用了,调用代码如下:

 1     import javax.naming.InitialContext;
 2     import javax.naming.NamingException;
 3     import javax.sql.DataSource;
 4     private static InitialContext context;
 5     private static DataSource dataSource;
 6 
 7     public static Connection getConn(){
 8         Connection con = null;
 9         try {
10             context = new InitialContext();
11             dataSource = (DataSource) context.lookup("java:comp/env/jndi/datasource"); //此处的jndi/datasource 就是配置数据源的名称
12             con = dataSource.getConnection();
13         } catch (SQLException e) {
14             e.printStackTrace();
15         } catch (NamingException e) {
16             e.printStackTrace();
17         }
18         return con;
19     }

这样就能获取到Connection了,然后就能和以前一样使用了。

 

  

posted @ 2014-12-25 16:52  BigBang92  阅读(1353)  评论(0编辑  收藏  举报