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

Tomcat环境下Spring Boot配置DB2 LUW驱动HADR切换异常求助

在Tomcat部署的Spring Boot中DB2 LUW HADR故障切换失败问题

我在使用Tomcat部署的Spring Boot应用中配置DB2 LUW连接时,碰到了HADR故障切换的问题:故障切换后应用无法自动连接到备用服务器,报错SQLCODE=-1776,提示"尝试连接备用数据库"。但手动重启应用后就能正常连接切换后的主服务器,说明DB2客户端重路由的配置属性本身是有效的。

测试用的Java示例代码如下:

Connection conn = null;
try {
  System.out.println("Connecting to the primary DB2 server...");
  Properties info = new Properties();
  info.put("user", DB_USER);
  info.put("password", password);
  info.put("clientRerouteAlternateServerName", CLIENT_REROUTE_ALTERNATE_SERVER_NAME);
  info.put("clientRerouteAlternatePortNumber", CLIENT_REROUTE_ALTERNATE_PORT_NUMBER);
  info.put("maxRetriesForClientReroute", MAX_RETRIES_FOR_CLIENT_REROUTE);
  info.put("retryIntervalForClientReroute", RETRY_INTERVAL_FOR_CLIENTREROUTE);
  info.put("enableSeamlessFailover", ENABLE_SEAMLESS_FAILOVER);

  conn = DriverManager.getConnection(JDBCURL, info);
  String hostName = getHostName(conn);
  return "Connected to "
      + conn.getMetaData().getDatabaseProductName()
      + " "
      + conn.getMetaData().getDatabaseProductVersion()
      + " "
      + HOST_NAME_LABEL
      + hostName;
} catch (SQLException ex) {
  System.err.println("An error occurred during connection or query execution:");
  ex.printStackTrace();
  return "Failed to make connection!";
} finally {
  if (conn != null) {
    try {
      conn.close();
      System.out.println("Connection closed.");
    } catch (SQLException e) {
      // Ignore closing errors
    }
  }
}

我怀疑问题出在Spring/Tomcat这边,因为把这段代码放到纯Java+JDBC的环境中时,故障切换能正常触发并连接到备用服务器。另外之前在WebSphere服务器上通过JNDI做类似配置时,也没出现过这个问题。

想请教有没有人遇到过并解决了这个问题,同时确认Tomcat是否和DB2客户端重路由的HADR切换存在兼容性问题。

内容的提问来源于stack exchange,提问作者Alec Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:53:25