エンドポイントが組み込みの Sun HttpServer を使用して公開される Web サービスを実装するスタンドアロン アプリケーションを作成しています。これには奇妙な問題があります。特定の展開状況では、サーバーが応答を処理/送信し、クライアントが応答を受信する間に明らかな遅延があります。
いくつかのシナリオを挙げましょう:
ケース 1) 動作中: サーバーは、ランタイムとして OpenJDK 1.6.0_23 を使用する Eclipse 内で実行されています。クライアントは軸 (axis2 ではありません!) で実装され、JBoss 内の Solaris x86 で実行されています (使用されている正確な Java バージョンはわかりませんが、Java 5 バージョンと思われます)。
ケース 2) 動作中: サーバーは Java 1.6.0_26 を使用して Solaris x86 で実行され、クライアントは OpenJDK 1.6.0_23 を使用して Eclipse 内で実行されています。
ケース 3) 動作しない: サーバーは Java 1.6.0_26 を使用して Solaris x86 で実行され、クライアントは Solaris x86 で軸を使用して Solaris x86 で実行されます (ここでも、Java 6 ではなく Java 5 であると思われます)。
1.6.0_30 で修正された次の Java バグ (OpenJDK 1.6.0_xx は同じバグに悩まされていないと仮定) に悩まされているのではないかと思っています。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7068416
しかし、その場合、なぜケース 2 が機能するのでしょうか? クライアントはサーバー側で TCP_NODELAY を制御できますか?
私が観察した正確な遅延について: 異なるコンテキストで公開された 2 つの Web サービスがあります。たとえば、2 つの異なる WSDL。クライアントには、(明らかに) サービスごとに個別の (軸 1) バインディングがあります。あるサービスでは、一貫して正確に 150 秒の遅延が見られます。他のサービスでは、遅延は一貫して 300 秒です。これらの価値観は、誰かにベルを鳴らしますか?
マールテン
編集私は今、 Eclipse Generated Web Service Client Extremely Slow の原因と解決策に傾いています。システムにアクセスできないホテルの部屋に座っているため、現時点ではテストできません。