я получаю это исключение с DBUnit в том же месте:DBUnit и SQL Server получать сокет закрыт
org.dbunit.dataset.DataSetException: com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed
at org.dbunit.database.DatabaseTableMetaData.getColumns(DatabaseTableMetaData.java:359)
т.д.
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Socket closed
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSChannel.read(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQueryInternal(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.getResultSetFromStoredProc(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.getResultSetWithProvidedColumnNames(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDatabaseMetaData.getColumns(Unknown Source)
at org.dbunit.database.DefaultMetadataHandler.getColumns(DefaultMetadataHandler.java:52)
at org.dbunit.database.DatabaseTableMetaData.getColumns(DatabaseTableMetaData.java:315)
... 15 more
Это происходит при попытке чтения метаданных столбца из Таблица. Код, делающий это, выглядит так:
new DefaultTable(tableName,
Columns.getColumns(columns,
connection.createDataSet(new String[]{tableName})
.getTableMetaData(tableName).getColumns()
)
)
соединение является экземпляром MsSqlConnection. Сначала я думал, что это сетевая проблема, но есть две проблемы с этой теорией. Сначала сервер, на котором выполняется тест, и база данных - это виртуальные машины на одном и том же сервере xen, поэтому нет реальной сети. Во-вторых, хотя проблема непоследовательна, она происходит в одном и том же месте каждый раз. Существует более 100 тестов базы данных, но это тот же самый, который терпит неудачу (когда он терпит неудачу).
Неужели кто-нибудь сталкивается с подобной проблемой? Какие-нибудь идеи?
Вы посмотрели, существует ли какая-либо связь между вашими испытаниями ... Если это «случайно не удается», вы можете изменить среду в предыдущем тесте. –
Его хорошее предложение, но нет связи, которую я могу сказать. Кажется, что соединение с базой данных было очищено и закрыто каждый раз. – Yishai
У нас были странные проблемы с сетью, запускающие какое-то программное обеспечение на виртуальных машинах. В одном случае наша система управления исходным кодом будет случайным образом потерять соединения.В конце концов мы сдались и перенесли его в свою специальную коробку. Возможно, это не вариант для вас, но я думал, что выброшу его. –