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
相关产品推荐
相关产品推荐

