Tomcat数据源--DataSource&Connection Pool
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat数据源--DataSource&Connection Pool相关的知识,希望对你有一定的参考价值。
连接池:
连接池是由容器(比如Tomcat)提供的,用来管理池中的连接对象。
连接池自动分配连接对象并对闲置的连接进行回收。
连接池中的连接对象是由数据源(DataSource)创建的。
连接池(Connection Pool)用来管理连接(Connection)对象。
数据源:
数据源(DataSource)用来连接数据库,创建连接(Connection)对象。
java.sql.DataSource接口负责建立与数据库的连接
由Tomcat提供,将连接保存在连接池中。
JNDI(Java Naming and Directory Interface,Java命名和目录接口):
在程序中使用JNDI获取数据源。
通过数据源创建的连接对象被统一的放入到连接池中进行管理。
搞清楚三者的关系,然后进行下面的配置 : )
数据源的配置与使用数据源的方法:
1、配置Tomcat的conf/context.xml
<Resource name="jdbc/news"
auth="Container" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="root" password="bdqn"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/news"/>
name=指定Resource的JNDI名称
auth=指定管理Resource的Manager(Container由容器创建和管理,Application由Web应用创建和管理)
type=指定Resource的java类
maxActive=指定连接池中处于活动状态的数据库连接的最大数量
maxIdle=指定连接池中处于空闲状态的数据库的最大数量
maxWait=指定连接池中连接处于空闲的最长时间,超过这个时间会提示异常,取值为-1,表示可以无限期等待,单位为毫秒(ms)
这里不要忘记:还需要将数据库的驱动jar包添加到,Tomcat安装目录下的lib文件夹中。
2、使用JNDI获取连接对象
lookup(java:comp/env/数据源名称");
//java:comp/env/这是Java的语法要求,必须写上。
//这里的数据源名称就是上面的jdbc/news,这个news是项目名。
3.编写代码获取数据源
// 获取数据库连接
public Connection getConnection2() {
try {
//初始化上下文
Context cxt=new InitialContext();
//获取与逻辑名相关联的数据源对象
DataSource ds=(DataSource)cxt.lookup("java:comp/env/jdbc/news");
conn=ds.getConnection();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
以上是关于Tomcat数据源--DataSource&Connection Pool的主要内容,如果未能解决你的问题,请参考以下文章
Tomcat Pooling DataSource数据库连接池优化(20180705)
server.tomcat.max-threads VS corePoolSize VS spring.datasource.tomcat.max
自动杀死长时间运行的查询(MySql),Apache Tomcat DataSource
启动 tomcat 报错“Invalid bean definition with name ‘dataSource‘ defined in URL“