- PR -

クライアント通信のタイムアウト

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/08/19
投稿数: 10
投稿日時: 2005-08-20 16:26
クライアントからサーバ側のWebサービスを呼び出した時に、
<java.net.SocketException: Connection aborted by peer: socket write error>
がおきてしまいます。

転送する情報が多くタイムアウトしているので、クライアント側の実装で値を設定してやればと思っているのですが、具体的な実装コードがわかりません。

System.setProperty ("sun.net.client.defaultConnectTimeout" ,"任意数値" );

一応コレで試してみたのですが、改善されませんでした。
なんか記述することにより、よりタイムアウトが早くなる気さえします。
(かといって値を大きくしても変化なしですし・・・)

Axisではなどではタイムアウトを設定できるらしいのですが、
使用していないので、SOAPに依存しない解決方法を探しています。

よろしくお願いします。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-08-21 12:03
未記入さん、こんにちは。

引用:
転送する情報が多くタイムアウトしているので、


とありますが、どのようにして判断されたのでしょうか?

sun.net.client.defaultConnectTimeoutはSun の実装に固有のプロパティ
で、「将来のリリースでサポートされなくなる可能性があります。」
とされているので使用するのはあまりお勧めできませんし、
ホストへの接続を確立する際のタイムアウトを指定するもので
あって、情報量とは関係ないと思います。
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-08-21 12:46
よくわかりませんけど、無通信の時間が長すぎるんじゃないですか?

引用:

転送する情報が多くタイムアウトしているので、



データが流れているならタイムアウトすること普通は無いんじゃないですかね?

クライアントから、データ作成用のクエリを呼び出してデータが出来るまでの間に
セッションがタイムアウトしているんじゃないですか?

クライアント、サーバ間のネットワーク機器(LD等)やノートン等のファイアウォールソフトがセッションタイムアウトしていることも考えられますよね。

リクエストを分けてみたらどうですか?
・データを作成するJOBを開始するリクエスト
・データが出来上がっているか確認するリクエスト
・データを取得するリクエスト
・一時データを削除するリクエスト

他には、データが出来るまでダミーデータを返してみるとか...
実際どうやればいいのかわ分かりませんけど....
未記入
会議室デビュー日: 2005/08/19
投稿数: 10
投稿日時: 2005-08-22 00:08
転送する情報の多さうんぬんの根拠は、
単純に軽めのデータを送った場合ならOKで、一定以上ならNGになるという現象からです。

今日はお休みで、コードをいじれなかったので、明日以降できるかぎり調べてみます。
・ホストへの接続が正しく確立されているか
・常時データが流れているか
とりあえずこの2点ですね。

ただ、ネットワーク系に疎いので検証手段などのアドバイスがあればお願いします。
#もちろんこちらでも探してみます。
1

スキルアップ/キャリアアップ(JOB@IT)