У меня следующий метод вызывается в веб-приложении Java EE.
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;
}
}
Это сокращенный фрагмент кода, который я выполняю, чтобы вставить около 40 000 новых записей в базу данных SQL Server 2000. Этот код выполняется из JSP, размещенного на сервере Solaris 10 в рабочей среде. До этого года этот код должен был обрабатывать только около 18 000 записей, и он работал безупречно. В этом году было сделано несколько обновлений, и, если не сказать больше, сейчас обрабатывается около 40 000 записей.
Во время разработки я тестирую это в той же базе данных, которая используется в производстве (поскольку наборы записей не конфликтуют) с моего ПК с Windows с сервера Tomcat, работающего внутри Eclipse. Все работает правильно, и все около 40 000 записей попадают в базу данных.
Когда я установил сайт на рабочий сервер и запустил тест, я заметил, что в середине процесса произошел сбой, со следующим сообщением об исключении:
com.microsoft.sqlserver.jdbc.SQLServerException: соединение закрыто.
в com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError (Неизвестный источник)
на com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed (Неизвестный источник)
на com.microsoft.sqlserver.jdbc.SQLServerStatement.checkClosed (неизвестный источник)
на com.microsoft.sqlserver.jdbc.SQLServerResultSet.checkClosed (Неизвестный источник)
на com.microsoft.sqlserver.jdbc.SQLServerResultSet.next (неизвестный источник)
at (ClassNameOmittedToProtectTheInnocent.java:74)
SQL Server настроен на неограниченное количество одновременных подключений, неограниченное время ожидания. Предполагая, что мой код в классе Db в порядке (так как он работает на стороне Windows и до увеличения данных хорошо работал на стороне Solaris), какие идеи стоит начать проверять
Я попытался отследить SQL Server, чтобы выяснить, происходит ли что-то с соединениями, но он, кажется, жив, даже после записи трассировки стека.
Если я могу предоставить какую-либо дополнительную информацию, пожалуйста, дайте мне знать. Я сделаю все возможное, чтобы помочь.