クライアント サーバー アーキテクチャのアプリケーションがあります。クライアントは Java Swing / AWT で Java Web Start を使用し、sert は Tomcat で HTTP サーバー / サーブレットを使用します。通信はオブジェクトのシリアル化から行われ、ObjectOutput を作成してバイト配列をシリアル化し、それぞれ ObjectInputStream と呼ばれるサーバーに送信し、逆シリアル化します。
アプリケーションは、「SocketException read timeout」というエラーを表示し始める特定の同時実行時間まで正しく通信します。サーバーがサーブレット doPost メソッドでメソッド ObjectInputStream.getObject() を呼び出すと、エラーが発生します。
Tomcat が遅くなり、サーバーを再起動する必要があるクラッシュ時まで、すべてが機能した後、エラーによってサーバーの応答時間が減少し始めます。
誰かがこの問題を経験しましたか?
クライアントコード
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
ObjectOutputStream oss = new ObjectOutputStream(os);
oss.writeUTF("protocol header sample");
oss.writeObject(_parameters);
oss.flush();
oss.close();
サーバーコード
ObjectInputStream input = new ObjectInputStream(_request.getInputStream());
String method = input.readUTF();
parameters = input.readObject();
input.readObject() はエラーのある場所です