1

Blackberry WebWorks でモバイル ネイティブ アプリケーションに取り組んでいます。私のアプリケーションは、IIS 7.5 で実行されている ASMX Web サービスからデータをフェッチする Tomcat 5.5 で実行されます。

データ取得操作中に 2 分後にタイムアウトが発生します。この問題を克服できません。克服するのを手伝ってください。

私は ajax タイムアウトを設定しており、設定ファイルでタイムアウトについても言及していますが、それでもタイムアウトが発生しています。

長い調査の結果、問題は ASMX サービス コールにあることがわかりました。特定の ASMX サービス メソッドでは、巨大な計算が関与するため、メソッドが結果を返すのに平均 4 分かかります。HTTP 応答が長時間戻ってこないため、呼び出し元のアプリケーションがタイムアウトになっているため、ASMX Web サービスは正常に動作しています。

Tomcat 5.5 の server.xml ファイルですべてを試しましたが、これを克服できるすべてのプロパティが含まれていましたが、結果はありませんでした。

この点で私を助けてください。

4

1 に答える 1

0

具体的なヘルプを得るには、「膨大な計算」について詳しく教えていただく必要があります。計算の性質に応じて、適用できる戦略がいくつかあります。

  1. クライアントが大量のワークロードを送信している場合は、2 分以内に処理できる小さなリクエストに分割します。

  2. なんらかの no-op 操作を応答形式に含め、完全な応答がまだ準備できていない場合は、ASMX サービスが定期的に no-op を送信するようにします。これにより、長い計算が続く間、接続が維持されます。ただし、これにはクライアントと ASMX サービス間のすべてのバッファリングについてかなり深く理解している必要があります。これは、特に接続を開いたままにしておくために no-op 操作をバッファリングする必要がないためです。これは理解するのが難しい場合があります。

  3. 1 つの要求/応答を 2 つの要求/応答のペアに変換します。1 つは「開始」用で、もう 1 つは「チェック」用です。「開始」API は計算を開始し、何らかの ID を返します。クライアントはこの ID を使用して「チェック」API を呼び出し、計算が完了したかどうかを確認し、結果を取得できます。

于 2012-09-30T20:13:52.630 に答える