JNDI+Tomcat配置MySQL数据源

1 篇文章 0 订阅

本文使用全局配置
具体步骤如下:

  1. 配置context.xml,把连接池做为JNDI资源进行管理
  2. 添加数据库驱动文件
  3. 配置web.xml
  4. 编写代码获取数据源

1、配置context.xml

context.xml:位于tomcat的conf目录下

<!-- 把连接池作为JNDI资源 -->
<context>
	<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" 
	maxWait="10000" username="root" password="123456" driverClassName="com.mysql.jdbc.Driver" 
	url="jdbc:mysql://localhost:3306/dbname?useUnicode=true&amp;characterEncoding=utf-8"/>
</context>

说明:

属性说明
name指定该Resource的JNDI名称
auth指定管理Resource的Manager
type指定Resource所使用的java类
maxActive指定连接池中允许处于活动状态的数据库连接数的上限
maxIdle指定连接池中允许处于空闲状态的数据库连接数的上限
maxWait指定连接池中的连接处于空闲的最长时间
username指定数据库的用户名
password指定数据库的用户密码
driverClassName指定数据库的驱动类的名称
url指定连接到数据库的url

2、添加数据库驱动文件

mysql-connector-java-5.1.18-bin.jar
在这里插入图片描述

3、配置web.xml

web.xml:位于所写项目的WEB-INF目录中

  <resource-ref>
  	<!-- 指定JNDI的名字,与context.xml中Resource元素的name属性值一致 -->
  	<res-ref-name>jdbc/mysql</res-ref-name>
  	<!-- 指定引用资源的类,与context.xml中Resource元素的type属性值一致 -->
  	<res-type>javax.sql.DataSource</res-type>
  	<!-- 指定管理所引用资源的Manager,与context.xml中Resource元素的auth属性值一致 -->
  	<res-auth>Container</res-auth>
  </resource-ref>

4、编写代码获取数据源

public Connection getCollection(){
	Connection connection = null;
	try{
		Context context = new InitialContext();
		DataSource ds = (DataSource)context.lookup("java:comp:/env/jdbc/mysql");
		connection = ds.getConnection();
	}catch(SQLException e){
		e.printStackTrace();
	}catch(NamingException e){
		e.printStackTrace();
	}
	return connection;
}

导入的包信息如下:

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

注1:JNDI地址有两种写法(更提倡方式一)
(1) java:comp:/env/jdbc/mysql
(2) jdbc/mysql
jdbc/mysql为JNDI的名字,与context.xml中Resource元素的name属性值一致

注2:使用JNDI来配置连接池的好处:
避免反复创建和销毁连接,减少系统开销和拖延

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值