日期:2014-05-16  浏览次数:20555 次

tomcat6使用JNDI连接MySql数据库
一、添加数据库驱动文件
通过数据源访问数据库,由于数据源由tomcat创建并维护,所以必须把MySql的驱动包拷贝到Tomcat根目录\lib中
二、配置数据源
在tomcat根目录\conf\context.xml里的<Context>节点中添加以下配置
<Resource name="dataSource" auth="Container"
    type="javax.sql.DataSource"
    username="root" password="root"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/test"
    maxActive="100" maxIdle="10" maxWait="5000" />
这里我们介绍一下<Resource>节点中的属性:
(1)name:指定Resource的JNDI名字,可自定义
(2)auth:指定管理Resource的Manager,它有两个可选值:Container和Application。Container表示由容器来创建和管理Resource,Application表示由web应用来创建和管理Resource
(3)type:指定Resource所属的java类名
(4)maxActive:指定数据库连接池中处于活动状态的数据库连接的最大数目。取值为0,表示不受限制
(5)maxIdle:指定数据库连接池中处于空闲状态的数据库连接的最大数目。取值为0,表示不受限制
(6)maxWait:指定数据库连接池中数据库连接处于空闲状态的最长时间(以毫秒为单位),超过这个时间将会抛出异常。取值为-1,表示可以无限制等待
(7)username:指定连接数据库的用户名
(8)password:指定连接数据库的口令
(9)driverClassName:指定连接数据库的JDBC驱动程序
(10)url:指定连接数据库的url
三、获得数据源
在这里,我们创建一个类

package com.jndi.util;

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class BaseDao {
public static Connection getConnection(){
Connection conn = null;
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/dataSource");
conn = ds.getConnection();
} catch (NamingException e) {
System.out.println("获取上下文资源失败!");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("获取数据库连接失败!");
e.printStackTrace();
} catch (Exception e) {
System.out.println("未知异常!");
e.printStackTrace();
}

return conn;
}

这样,我们就可以获得数据库连接了。