这是著名的SQLServerException
错误消息:
错误:“地址已在使用中:连接。验证连接属性,检查 SQL Server 实例是否正在主机上运行并在端口接受 TCP/IP 连接,并且没有防火墙阻止与端口的 TCP 连接。” .
但是,它并没有在第一次通话中发生。所有的 DAO 方法,使用一种独特的方法来获取连接,并且它们都在完成数据库后关闭连接。
当超过这些调用次数时,该方法将无法再获取连接并 throw SQLServerException
。
服务器配置中有一些东西不是数据库。因为,我用不同的数据库尝试了相同的场景,并且发生了相同的错误。但是,当我更改服务器(Web 服务器)时,我没有收到错误消息。
此消息有数十种解决方案,但都与防火墙或数据库连接有关。我的问题是为什么有时有效,有时无效?
这是获取连接的方法体:
Connection connection = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection = DriverManager.getConnection(DB_CONNECTION_STRING, USERNAME, PASSWORD);
} catch (ClassNotFoundException e) {
DbmgrLogger.logger.error("fail creating the sql connection", e);
} catch (SQLException e) {
DbmgrLogger.logger.error("fail creating the sql connection", e);
}
return connection;
更新: 这是堆栈:
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)