必须在tomcat运行时环境配置jndi数据源:下载适配mysql版本的jdbc驱动(8.0.33或5.1.49),同时放入web-inf/lib和tomcat/lib;配置context.xml声明jdbc/myapp资源,web.xml中添加对应resource-ref;servlet通过java:comp/env/jdbc/myapp查找并获取连接。

要在MyEclipse中为Java Web项目启用数据库连接池,必须绕过IDE内置的Database Explorer(它只支持单连接测试),直接在Tomcat运行时环境中配置JNDI数据源——否则每次getConnection()都会新建物理连接,无法体现连接池价值。
准备MySQL JDBC驱动包
下载mysql-connector-java-8.0.33.jar(适配MySQL 8+)或5.1.49.jar(适配MySQL 5.7及以下),不要用旧版5.1.24——它不兼容JDK 11+且缺少SSL握手修复。
将jar包复制到两个位置:【WEB-INF/lib】 和 【Tomcat安装目录/lib】。缺一不可:前者供项目编译识别,后者供Tomcat容器加载驱动类。
右键项目→Properties→Java Build Path→Libraries→Add External JARs→选中刚放入WEB-INF/lib的jar包→Apply。
配置context.xml声明JNDI资源
在项目WebContent/META-INF下新建context.xml文件(若无META-INF则手动创建)。
写入以下内容(注意替换真实参数):
type="javax.sql.DataSource"
maxActive="50"
maxIdle="10"
minIdle="5"
initialSize="5"
removeAbandonedOnBorrow="true"
removeAbandonedTimeout="60"
logAbandoned="true"
username="root"
password="your_real_password"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/your_db_name?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"/>
关键点:【name="jdbc/myapp"必须带前缀jdbc/,否则lookup时会抛NameNotFoundException】;URL中useSSL=false和serverTimezone是MySQL 8+必需参数,漏写会导致Connection timed out异常。
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
在web.xml中声明资源引用
打开WebContent/WEB-INF/web.xml,在<web-app></web-app>标签内末尾处插入以下代码段:
此处<res-ref-name></res-ref-name>值必须与context.xml中name属性完全一致,包括大小写和斜杠方向。
编写Servlet验证连接池可用性
在src目录下新建包(如com.test.db),创建DbTestServlet.java:
public class DbTestServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/myapp");
Connection conn = ds.getConnection();
resp.getWriter().println("✅ 连接池获取连接成功!");
conn.close(); // 归还到池,不是销毁
} catch (Exception e) {
resp.getWriter().println("❌ " + e.getMessage());
}
}
}
部署项目到Tomcat后访问http://localhost:8080/your_project_name/DbTestServlet,页面显示✅即表示连接池已生效。
此时观察Tomcat控制台日志,首次请求会出现“Initializing Spring root WebApplicationContext”类提示——说明容器已加载JNDI资源并完成绑定。










