3

ApacheAxisを使用してサービスにSOAPリクエストを作成しています。今のところサービスは単純なエコーですが、応答が返ってくるまでに数秒かかることがあります。したがって、サーバーがHTTP / 1.1接続を維持している場合でも、接続の確立に時間がかかるのではないかと思います。

どういうわけか、リクエスト間でクライアントを再利用する必要がありますか、それともリクエストごとに新しいクライアントを取得しても問題ありませんか?

これは私のコードです。リクエストの合間に保持する必要がlocatorありclientますか、それとも忘れても大丈夫ですか?

MyExampleServiceLocator locator = new MyExampleServiceLocator();
MyExampleServicePort client = locator.getMyExampleServicePort(url);
MyExampleRequest request = buildMyExampleRequest();
MyExampleResponse response = client.send(request);   // This takes time sometimes
4

1 に答える 1

3
  • 複雑なサービスの場合、ロケーターをインスタンス化するコストが高くなる場合があります。したがって、常に可能な限り再利用するようにしてください。ロケーターはスレッドセーフであることが期待されるため、シングルトンとして使用できます。ただし、Axis 1.4 には、ロケーターに関して少なくとも 1 つのスレッド セーフの問題があることに注意してください: AXIS-2498
  • 新しいスタブ (クライアント) を作成する方が費用はかかりませんが、スタブを再利用するのは問題ありません。また、ステートフルな方法でスタブを使用するシナリオ (HTTP セッションなど) を除いて、(少なくとも Axis 1.4 では) スレッド セーフであることが期待されます。
  • Axis のデフォルトの HTTP トランスポートは HTTP 1.0 のみをサポートし、リクエストごとに新しい接続を作成します。
于 2012-11-15T18:34:49.550 に答える