以下是着名的SQLServerException
错误消息:
错误:“地址已在使用中:连接。验证连接 属性,检查SQL Server的实例是否正在运行 托管并接受端口上的TCP / IP连接,没有 防火墙阻止与端口的TCP连接。“。
但是,它并没有在第一次通话中发生。所有DAO方法都使用一种独特的方法来获取连接,所有这些方法在完成数据库时都会关闭连接。
当这些调用次数超过时,该方法无法再获取连接并抛出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)
答案 0 :(得分:0)
该错误意味着您尝试使用的端口已被其他东西使用(很可能是同一个未关闭资源的应用程序?)
Adding comment as answer for closing purposes.