我在Java EE Web應用程序中調用以下方法。到SQL Server 2000的JDBC連接在Solaris服務器上隨機重置
public static void submitToPending()
{
Db db;
ResultSet rs;
try
{
db = new Db("Database.properties");
rs = db.issueQuery(getDescriptorList());
while (rs.next())
{
db.insertApplicationData(rs.getString("Id"));
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
db = null;
rs = null;
}
}
這是代碼縮寫的片段我正在插入約40000新記錄到SQL Server 2000數據庫。此代碼是從生產中的Solaris 10服務器上承載的JSP執行的。今年之前,這個代碼只需要處理大約18,000條記錄,並且工作完美無瑕。今年有一些更新,爲了備件細節,現在可以處理大約40,000條記錄。
在開發過程中,我在我的Windows PC上從運行在Eclipse內部的Tomcat服務器上對生產中使用的同一數據庫(與記錄集不衝突)進行測試。一切工作正常,並且所有40,000條記錄都將其記錄到數據庫中。
當我安裝該網站到生產服務器並運行了一個測試,我注意到,在中途過程失敗,有以下例外消息:
com.microsoft.sqlserver.jdbc.SQLServerException:連接已關閉。 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerStatement.checkClosed(Unknown Source ) 在com.microsoft.sqlserver.jdbc.SQLServerResultSet.checkClosed(未知來源) 在com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(未知來源) 在(ClassNameOmittedToProtectTheInnocent.java:74)
SQL Server被設置爲無限制的同時連接,無限制超時。假設我的代碼在類Db沒問題(因爲它在Windows上工作,直到數據增加,在Solaris端一直表現良好),有什麼想法可以開始檢查?
我試圖跟蹤SQL Server以查看連接是否發生了一些事情,但即使在寫入堆棧跟蹤之後,它似乎仍然存在。
如果我可以提供任何其他信息,請讓我知道。我會盡我所能提供幫助。
即使這些調用是在finally塊嗎?這在db.insertApplicationData()方法調用失敗。 – karlgrz 2009-07-17 23:37:31