我不断收到此异常用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个数据库测试,但同一个失败(失败时)。
有没有人跑过类似的问题?任何见解?
你看,如果你的测试之间有任何耦合... 如果它“随机失败”,你可能会改变以前的测试环境。 – 2009-08-27 22:19:30
这是一个很好的建议,但我没有看到耦合。数据库连接似乎每次都会创建并关闭。 – Yishai 2009-08-27 22:25:24
我们在虚拟机中运行一些软件时遇到了奇怪的网络问题。在一个案例中,我们的源代码管理系统会随机丢失连接。我们最终放弃并将其移至自己的专用盒子中。可能不适合你,但我想我会把它扔在那里。 – 2009-08-27 22:35:46