Javaコードの一部で自動バルクテストを実行したときに、奇妙な "Invalid Packet Lenght"(エラーの綴り方)エラーが発生しました。誰かがこのエラーを以前に遭遇したか、正しい方向に向けることができます。JDBC Thin Driver:無効なパケット長
JUnitユニットテストまたはGUIからコードをテストするときにこのエラーが発生することはありません。私は私の自動バルクテストでこのエラーに遭遇します。私の一括テストについて少し:いくつかの入力に対して、私のコードは長い間実行されるでしょう(それは予想されます)。しかし、より合理的な時間枠に結果をスピードアップするためには、それぞれを実行するための新しいスレッドを作成しています私はいくつかの与えられた最大経過時間の後にテストを停止することができるように個々のテスト。
データをロードするには、テストコードと実際のコードの両方を同じデータベースインスタンスに接続する必要があることに注意してください。実際のコードは、単一の接続を使用してデータベースから読み取ります(マルチスレッドではありません)。私はまだテストがデータベースに接続するための最善の方法を見つけようとしています(したがってこの質問)。
私の最初の考えは、テストスレッドを閉じて、実行を早期にやめるようなやり方では面白くないことをやっているということでした。私の実際のコードを内蔵スレッドを殺すために何の「やさしい」方法はありませんマルチスレッドではありませんので、私は非推奨
threadObject.stop();
メソッドを呼んでいる。(〜2-3)、いくつかのスレッドを停止した後、私のJDBC接続は1つの "無効なパケット長さ"エラーの後に "ソケットクローズ"例外を残りのテストでスローします。
私は同じ結果とこれらのすべてを試してみた:
- リユース 実際のコードを再利用するすべての のテストのために同じ第二の接続つの新しい接続を作成します
- を使用するのと同じ接続を
- 停止するたびにテスト接続を閉じて再作成する 長時間実行テスト
- テストごとに新しい接続を作成する(これは接続カウントを最大にするまで有効)
"test"と "actual"という2つの接続のうち、 "test"接続が例外をスローする接続であることが判明しました。
構成:
- のEclipse 3.4
- Javaのコンプライアンス1.6
- JDBCドライバojdbc14_g.jar
- のOracle 9 DB
私が間違って何をしているのですか? "テスト"接続を処理する別の方法はありますか?バルクテストを実行するだけの "実際の"接続を再構築する必要がありますか? "Invalid Packet Lenght"エラーの原因
これは実際には、StackOverflowの_title_の「lenght」の中で最も古い形式です。それは修正するのが間違っているため、常にそのままになります。 –