2011-08-31 6 views
3

私は、Windowsサーバーに対して実行される一連のWebサービス操作を呼び出すJava Webサービスクライアント(Axis 1.4を使用)をLinux上で実行しています。Webサービスでタイムアウトを読み取りましたが、操作はまだ完了していますか?

java.net.SocketTimeoutException: Read timed out 

ただし、クライアント側では有効な応答がなくても、サーバー上での操作は完了しています。これはWebサービスサーバー/クライアントのバグですか?または、TCPソケット上で発生する予定ですか?

+0

ソケットで読み取りタイムアウトを設定した場合、これは正常な動作です。応答を待つ間にタイムアウトしないように、基礎となるソケットを構成してみてください。私はAxisでそれをする方法を知らない。 –

答えて

2

これはバグではなく予期される動作です。 Webサービスの背後にある操作は、読み取りタイムアウトについて何も知らないため、操作の処理を続行します。

接続のタイムアウトを長くすることができます。ソケット自体を手動で操作する場合、socket.connect()メソッドはタイムアウト(ミリ秒単位)を取ることができます。ゼロはサイドタイムアウトを避けるべきです - APIドキュメントを参照してください。

操作がそれぞれ時間がかかる場合は、非同期にすることを検討することをお勧めします。最初の要求で操作が送信され、2回目の要求で結果が返されます。結果がいつ用意されているかを確認します。

この時点で操作が完了していると思われる場合は、サーバーにアクセスして時間がかかる理由を確認してください。

+0

サーバーは本当に私のコントロール下にありません。私は、これらのタイムアウトの例外を読んで捕捉し、操作が成功した場合にWSを照会する必要があると思います。ありがとう。 –

関連する問題