Tomcat里头怎么弄SQLServer连接池,配置步骤和实现大概说说
- 问答
- 2026-01-06 09:00:17
- 4
在Tomcat里设置SQL Server连接池,说白了就是告诉Tomcat:“你帮我管着一批到SQL Server数据库的连接,我的程序需要的时候找你拿,用完了还给你,你不用每次都新建一个连接,太麻烦了。” 这样做的好处是速度快,因为建立真实的数据库连接是很耗时的,连接池提前建好一批,随用随取;而且连接池还能管理这些连接,比如检查连接是否还有效,最多允许多少个连接等等。
下面我就说说具体的配置步骤和简单的实现方法,整个过程主要分为两大步:第一是配置Tomcat本身,第二是在你的Web程序里使用这个连接池。
第一步:把SQL Server的“驱动程序”交给Tomcat

想让Tomcat能和SQL Server对话,首先得把翻译官——也就是JDBC驱动程序——给它,SQL Server的官方驱动程序是一个叫mssql-jdbc的jar包。
- 获取jar包:你可以从微软的官方网站(来源:Microsoft Download Center 或 Maven Central Repository)下载最新的
mssql-jdbc的jar文件,文件名字可能类似于mssql-jdbc-12.2.0.jre11.jar。 - 放置jar包:把这个下载好的jar包放到你的Tomcat安装目录下的
lib文件夹里,你的Tomcat装在C:\apache-tomcat-9.0.xx,那么就放进去C:\apache-tomcat-9.0.xx\lib,这一步非常关键,相当于给Tomcat服务器装上了连接SQL Server的驱动,放好之后,最好重启一下Tomcat,让它加载这个新的驱动。
第二步:在Tomcat的全局配置文件里“声明”连接池
我们要在Tomcat的配置文件里写下连接池的详细信息,比如数据库地址、用户名、密码、连接数等,这个配置文件是context.xml,这里有个关键点:这个文件有两个地方可以改,效果范围不同。

- 全局配置(推荐给多个应用使用):修改Tomcat根目录下的
conf/context.xml文件,这样配置的连接池,在这个Tomcat里部署的所有Web应用程序都可以使用。 - 局部配置(仅限单个应用使用):在你自己的Web应用的
META-INF目录下创建一个context.xml文件(如果不存在就新建)。
这里以修改全局的conf/context.xml为例,这样更通用,你用文本编辑器打开这个文件,在<Context>标签里面,加上一段<Resource>的配置,下面是一个具体的例子,你需要把它里面的占位符换成你自己的数据库信息:
<Context>
... (其他已有的配置)
<Resource name="jdbc/YourConnectionPoolName"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://你的服务器地址:1433;databaseName=你的数据库名;encrypt=true;trustServerCertificate=true;"
username="你的数据库用户名"
password="你的数据库密码"
maxTotal="100"
maxIdle="30"
maxWaitMillis="10000"
validationQuery="SELECT 1"
testOnBorrow="true"/>
</Context>
我来解释一下上面这些参数都是什么意思(来源:Apache Tomcat官方文档关于JNDI DataSource的配置):
name:这是你给这个连接池起的名字,你的程序后面就通过这个名字来找它,通常以jdbc/开头。auth和type:照着我上面写的填就行,Container表示由Tomcat容器来管理认证,DataSource是标准的数据源类型。driverClassName:驱动类的全名,对于SQL Server就是这个。url:数据库的连接地址。你的服务器地址如果是本机就写localhost,如果是远程服务器就写IP或域名。1433是SQL Server默认端口。databaseName换成你的实际数据库名。encrypt和trustServerCertificate是为了解决新版本驱动安全连接的问题,如果不需要加密可以设为false。username和password:登录数据库的用户名和密码。maxTotal:连接池里最多能同时存在的活动连接数,根据你的应用压力调整。maxIdle:连接池里空闲连接的最大数量。maxWaitMillis:当连接池耗尽时,应用请求连接的最大等待时间(毫秒),超时则抛出异常。validationQuery:一条简单的SQL语句,用于验证连接是否还有效。SELECT 1就很好。testOnBorrow:设为true表示应用从池中 borrow(获取)连接时,先验证一下是否有效,避免拿到坏连接。
配置保存后,必须重启Tomcat,让这个新的配置生效。

第三步:在你的Web程序里“使用”连接池
现在Tomcat这边已经准备好了,你的Java Web程序(比如一个Servlet或JSP)该怎么用它呢?很简单,通过JNDI lookup(可以理解为“按名字查找资源”)来获取数据源。
这里给一个在Servlet里使用的简单例子:
import java.io.*;
import java.sql.*;
import javax.annotation.Resource;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.DataSource;
public class MyServlet extends HttpServlet {
// 使用@Resource注解,直接注入数据源,name就是你在context.xml里配置的名字
@Resource(name="jdbc/YourConnectionPoolName")
private DataSource dataSource;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 声明Connection和Statement
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 关键一步:从数据源获取连接,而不是用DriverManager创建
conn = dataSource.getConnection();
// 剩下的就是标准的JDBC操作了
stmt = conn.createStatement();
String sql = "SELECT id, name FROM your_table";
rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
out.println("ID: " + id + ", Name: " + name + "<br>");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 非常重要:使用完毕后,一定要关闭资源,但注意,关闭Connection并不是真的关闭,而是还给连接池
if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } }
if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } }
if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } }
}
}
}
最后强调几个要点:
- 驱动版本匹配:确保你用的
mssql-jdbc驱动版本与你的SQL Server版本和Java版本大致兼容,太老的驱动可能连不上新版本数据库。 - 网络和权限:确保Tomcat服务器所在的机器能网络通畅地访问到SQL Server服务器,并且你提供的用户名密码有足够的权限。
- 关闭连接:在
finally块中关闭连接 (conn.close()) 是必须的,但这个关闭操作在连接池环境下,并不是断开物理连接,而是将这个连接标记为空闲,返还给连接池供其他请求使用,如果不关闭,会导致连接泄露,很快耗光连接池资源。 - 故障排查:如果连不上,首先检查Tomcat的日志文件(
logs/catalina.out或logs/localhost.yyyy-mm-dd.log),里面通常会有非常详细的错误信息,比如驱动类找不到、URL格式错误、认证失败等。
就是Tomcat中配置和使用SQL Server连接池的主要步骤和要点,整个过程的核心就是配置Tomcat的context.xml和在代码中通过JNDI查找DataSource。
本文由黎家于2026-01-06发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/75475.html
