You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8升21、SpringBoot2.x升3.x后SQL Server连接超时问题

Java 21 + Spring Boot 3 连接SQL Server超时问题排查与解决

针对你升级Java 8→21、Spring Boot 2.x→3.x后出现的SQL Server连接超时错误,结合升级环境的变化,按以下步骤排查:

1. 升级JDBC驱动至兼容版本

Spring Boot 3.x 基于Spring 6,要求JDBC驱动适配Java 17+,旧版sqljdbc4.x驱动在Java 21下可能存在兼容性问题:

  • 替换为最新版mssql-jdbc驱动(推荐12.x及以上版本)
  • Maven依赖示例:
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>12.6.1.jre21</version>
    </dependency>
    
  • 确保驱动类配置正确:com.microsoft.sqlserver.jdbc.SQLServerDriver

2. 替换老旧的连接池组件

堆栈显示使用的是commons-dbcp 1.4,该版本发布于2009年,与Java 21、Spring 6存在兼容性风险,建议:

  • 切换为Spring Boot 3默认的HikariCP(性能更好且兼容性强),无需额外引入依赖,只需调整配置:
    spring:
      datasource:
        url: jdbc:sqlserver://xyz:1071;databaseName=你的数据库名
        username: 账号
        password: 密码
        driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        hikari:
          connection-timeout: 30000
          maximum-pool-size: 10
    
  • 若坚持使用commons-dbcp,升级至2.x版本(如2.9.0)

3. 适配Java 21模块系统(JPMS)

Java 21启用了模块系统,若驱动未适配可能导致类加载异常:

  • 确保使用的mssql-jdbc版本支持JPMS(11.2.0及以上)
  • 模块化项目需在module-info.java中添加:
    requires com.microsoft.sqlserver.jdbc;
    

4. 验证网络与SQL Server配置(排除环境变化)

即使升级前正常,也需确认环境未发生变化:

  • 用telnet xyz 1071或nc -zv xyz 1071测试端口连通性,排除防火墙/网络路由问题
  • 在SQL Server配置管理器中确认:
    • TCP/IP协议已启用
    • 实例监听端口为1071
    • 允许远程连接到SQL Server实例
  • 检查数据库账号是否具备远程访问权限

5. 调整连接URL参数

新版本JDBC驱动对URL参数的默认值可能变化,尝试添加参数排除SSL相关问题:

jdbc:sqlserver://xyz:1071;databaseName=你的数据库名;encrypt=false;trustServerCertificate=true

(注:encrypt=false仅用于测试,生产环境需配置正确的SSL证书)

内容的提问来源于stack exchange,提问作者sheetal mahandule

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:43:20