4

Axis 1.4 で生成された Web サービス クライアント コードで使用される標準オプションの変更に問題があります。古い RPC/Encoded スタイルを使用しているパートナーの特定の Web サービスを使用しています。これは基本的に、Axis 2 を使用することはできず、Axis 1.4 に限定されていることを意味します。

サービスクライアントは、実際には非常にうまく動作するプロキシを介してリモートサーバーからデータを取得しています.

アプリケーションはサーブレットとしてデプロイされます。取得した外部 Web サービスの応答は、内部システム/CMS に提供する (XML) ドキュメントに挿入されます。しかし、外部サービスが応答しない場合 (まだ発生していませんが、いつ発生する可能性があります) は適切に分解し、適切な時間内に、計算された Web サービス情報を含まない生成された XML ドキュメントを返したいと考えています。取得するデータはオプションです (この特定の計算が欠落していても、大きな問題にはなりません)。

そこで、タイムアウト設定を変更しようとしました。軸のドキュメントで見つけることができるすべてのメソッドとキーを適用/使用して、Webを検索して接続とソケットのタイムアウトを変更しました。これらのどれも接続タイムアウトに影響を与えないようです。

バージョン 1.4 に基づいて軸スタブ/サービス/ポートの設定を変更する方法についてアドバイスをいただけますか?

私が試したいくつかの構成の例を次に示します。

MyService service = new MyServiceLocator();
MyServicePort port = null;

try {
    port = service.getMyServicePort();
    javax.xml.rpc.Stub stub = (javax.xml.rpc.Stub) port;
    stub._setProperty("axis.connection.timeout", 10);
    stub._setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, 10);
    stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, 10);
    stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, 10);

    AxisProperties.setProperty("axis.connection.timeout", "10");
    AxisProperties.setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, "10");
    AxisProperties.setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, "10");
    AxisProperties.setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, "10");

    logger.error(AxisProperties.getProperties());

    service = new MyClimateServiceLocator();
    port = service.getMyServicePort();
}

サービスの生成前と生成後にプロパティの変更を割り当て、初期化中にプロパティを設定し、見つけた他のいくつかのタイムアウトキーを試しました...私はそれについて怒っていると思い、すでに試したことを忘れ始めています!

私は何を間違っていますか?オプションがあるはずですよね?

適切な解決策が見つからない場合は、コード内でタイムアウトを使用して同期スレッドを設定することを考えましたが、実際にはかなりぎこちなく、なんとなくばかげているように感じます。他に何か想像できますか?

前もって感謝します

イェンス


axis1.4 Java クライアント ソープ wsdl2java rpc/encoded xml サーブレット 生成 変更 セットアップ スタブ タイムアウト 接続 ソケット キー メソッド

4

2 に答える 2

0

サービス ポート オブジェクトを に型キャストしますorg.apache.axis.client.Stub

(すなわち)

org.apache.axis.client.Stub stub = (org.apache.axis.client.Stub) port;

次に、すべてのプロパティを設定します。

stub._setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, 10);
stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, 10);
stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, 10);
于 2015-10-21T17:05:45.783 に答える