を閉じて、私は同じ場所に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インスタンスです。最初はネットワーク問題だと思っていましたが、その理論には2つの問題があります。まず、テストを実行しているサーバーとデータベースは、同じxenサーバー上の両方の仮想マシンであるため、実際のネットワークは存在しません。第二に、問題は矛盾していますが、毎回同じ場所で発生します。 100を超えるデータベーステストがありますが、この同じテストは失敗します(失敗した場合)。
は誰もが同じような問題全体を実行していますか?どんな洞察?
それは「ランダムに失敗した」場合は、前のテスト環境を変更することがあります ...あなたのテストの間の任意の結合がある場合は、あなたが見てもらいます。 –
それは良い提案ですが、私が理解できるカップリングはありません。データベース接続は毎回きれいに作成されているようです。 – Yishai
仮想マシンでいくつかのソフトウェアを実行する際に奇妙なネットワーク問題が発生しました。 1つのケースでは、ソース管理システムが無作為に接続を失います。私たちは結局それをあきらめて、それを専用のボックスに移しました。あなたのための選択肢ではないかもしれませんが、私はそこに投げ捨てると思っていました。 –