2012-03-16 25 views
3

Axis 1.4で生成されたWebサービスクライアントコードで使用される標準オプションを変更する際に問題があります。 私たちは、古いRPC /エンコードされたスタイルを使用しているパートナーの特定のWebサービスを消費します。これは、基本的に、Axis 2には向かないが、Axis 1.4に制限されていることを意味します。Axis 1.4で生成されたSOAP Javaクライアントのタイムアウト設定を変更する

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

アプリケーションはサーブレットとしてデプロイされます。取得された外部Webサービスの応答は、内部システム/ CMSに提供する(XML)ドキュメントに挿入されます。 外部サービスが応答していない場合(まだ発生していない可能性がありますが、いつでも発生する可能性があります)、我々はうまく縮退し、計算された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 /エンコードされたXMLサーブレットは、私はそれがかもしれないと思う変更セットアップスタブタイムアウト接続ソケットキー方式

+1

すべての人がこの問題の解決策を見つけましたか? – Stainedart

答えて

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);

+1

上記の解決策は機能していません。 Axis 1.4とJava 1.7の使用実際には、Axisのタイムアウトのための単一のアプローチはありません..驚き!下記のリンクに記載されているすべてのオプションを試してみる - http://wiki.apache.org/ws/FrontPage/Axis/AxisCommonsHTTP -/- http://www.coderanch.com/t/544075/Web-Services/ java/set-timeout-Axis-client -/- https://samaxes.com/2009/04/axis-14-read-timed-out-and-http-11/ – Santosh

関連する問題