JDBC数据库连接池----JNDI的使用

时间:2021-05-28 19:11:28

本文不是用来解释JNDI,也不是用来介绍数据库连接池的,单纯是为了记录JNDI在数据库连接池中的使用示例的。

Tomcat中JNDI的三种配置方式:参考链接
本人使用的是局部配置方式(上面链接中第三种配置方式),此种方式不依赖于Tomcat。

配置方式:
(1)在Web项目的META-INF文件夹中新建context.xml文件,文件内容为:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/myDataSource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/student"
username="gsfan"
password="111111"
maxActive="20"
maxIdle="10"
maxWait="10000"/>

</Context>

(2)在项目的web.xml文件中,添加以下配置内容:

<resource-ref>
<description>JNDI DataSource</description>
<res-ref-name>jdbc/myDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

其中res-ref-name的名字要与context.xml文件中名字保持一致,其他的对照着修改。
(3)测试代码:

package org.gsfan.db;

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 DBConnect {
private Connection connection = null;
public DBConnect()
{

}

public Connection getConnection() {
try {
connection = getConnectionUseJNDI();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}

public Connection getConnectionUseJNDI() throws NamingException, SQLException{
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/myDataSource");
Connection conn = ds.getConnection();
return conn;
}
}