在Tomcat中配置数据库连接池,通常只需要在context.xml里声明一个数据源Resource,应用便可通过JNDI名称获取复用连接,从而减少频繁建立连接的开销。

一、context.xml中配置数据源
Tomcat的context.xml一般位于conf目录或项目的META-INF下。我们在其中添加Resource元素,类型为javax.sql.DataSource,并指定连接池参数。
<Context>
<Resource name="jdbc/myDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="50"
maxIdle="10"
maxWait="10000"
username="root"
password="123456"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8"/>
</Context>
上述配置中,name为JNDI名称,maxActive表示最大活跃连接数,maxIdle为最大空闲连接,maxWait为等待连接的最长时间(毫秒)。
二、在Java代码中获取连接
配置完成后,在Servlet或普通Java类中通过InitialContext查找数据源,再取得连接。
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
public class DbUtil {
public static Connection getConn() throws Exception {
// 初始化上下文
Context ctx = new InitialContext();
// 查找配置的数据源
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/myDB");
// 从连接池获取连接
return ds.getConnection();
}
}
三、常见参数说明
| 参数 | 作用 |
|---|---|
| maxActive | 连接池中同时可使用的最大连接数 |
| maxIdle | 最大空闲连接数,超过会被回收 |
| maxWait | 当无可用连接时,最长等待时间 |
| driverClassName | 数据库驱动类的全限定名 |
四、注意事项
- 数据库驱动jar需放在Tomcat的lib目录下,避免类加载问题。
- 若使用MySQL 8以上,driverClassName应改为com.mysql.cj.jdbc.Driver。
- 在代码中使用完Connection后应及时关闭,连接会归还池中而非真正断开。
通过上述方式,我们便完成了Tomcat中context.xml配置数据库连接池与数据源的工作,应用可稳定高效地访问数据库。
Tomcatcontext_xml数据库连接池数据源JDBC修改时间:2026-07-24 21:03:10