サーバーWSDLからクライアントスタブを生成するためにAxis2フレームワークを使用したSOAPベースの統合にひどく行き詰まっています。シナリオは次のとおりです。
- 最初にログインAPI呼び出しが常にあり、SOAP本文でSuccess応答を返し、HTTPヘッダーでTemporaryRedirectを返します。HTTPヘッダーの[場所]フィールドにセッションIDを含むURLも提供します。
- 次のAPI呼び出しは、このリダイレクト場所で行う必要があります。同じTCP接続で、適切な応答を取得します。
- 問題は、Axis2で生成されたスタブを使用したWebサービス実装の一部として、このリダイレクトURLをリロードし、--- "stub = new Stub(newurl)"として再インスタンス化する必要があることです。
- これが行われるとすぐに、新しいTCP接続が作成されるため、次のリクエストでは、ログインAPIと同期していないため、「セッションIDが無効です」という応答が返されます。
私はこのフォーラムで解決策として言及されているすべてを試しましたが、何もうまくいきません。たとえば-
MultiThreadedHttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
HttpClient httpClient = new HttpClient(httpConnectionManager);
ServiceClient serviceClient = stub._getServiceClient();
Options opts = stub._getServiceClient().getOptions();
opts.setTo(new EndpointReference(prop.getProperty("target_end_point_url")));
opts.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Constants.VALUE_TRUE);
opts.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
serviceClient.setOptions(opts);
stub._setServiceClient(serviceClient);
同様に、私は他の多くのオプションも試しました。しかし、それはまったく役に立ちません。