RestTemplateを使用したSpring Webサービスのタイムアウト構成

RestTemplateを使用しているSpring Webサービスのクライアント側でタイムアウトを設定したいと思います。私は次の設定を試しました:



    
    
    

    
    
    
    
    
    

しかし、私はNoClassDefFoundErrorを持っています。私はTomcatを起動します。

06 févr. 2012 10:43:43,113 [ERROR,ContextLoader] Context initialization failed
java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethodBase

しかし、私はpomm.xmlにcommons-httpclientを含めました:

    
        commons-httpclient
        commons-httpclient
        3.1
    

どのように私は/修正することができますの任意のアイデア?

前もって感謝します !

4

4 答え

Snicolasの答えはほとんど私のために働いた、ただキャストを変更しなければならなかったクラス:

RestTemplate restTemplate = new RestTemplate();    
((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setReadTimeout(1000*30);

また、接続時間を設定することもできます.Out:

((SimpleClientHttpRequestFactory)restTemplate.getRequestFactory()).setConnectTimeout(1000*30);
9
追加された

これは私のために働いた

( (HttpComponentsClientHttpRequestFactory) getRestTemplate().getRequestFactory() ).setReadTimeout( 120 * 1000 );

私は春のアンドロイドレストテンプレートのアンドロイドバージョンでそれを使用しました。


デフォルト値は60 * 1000

4
追加された

私はWebサービス消費のタイムアウトを設定する必要があるのと同じ要望を持っていましたが、私は他のspring confでそれを解決します。

最初の設定では、@ jsebFrank(java.lang.NoClassDefFoundError:org/apache/commons/httpclient/HttpMethodBase)と同じ問題がありました。

    
    
        
            
            
        
    
    

しかし、Springサポートが(16.5節タイムアウトの処理で)ここについて説明しているので、 SimpleClientHttpRequestFactoryリクエスト・ファクトリ(Spring restTemplateのデフォルト・ファクトリ)を使用できます。

それを使用して、私はもはや問題はありません:

    
    
        
            
            
        
    
    
0
追加された

私は同じ問題を抱えていて、最初にSpringの設定を変更することで修正しようとしました 私の試みはすべて不合理だった。

最後に、次のJVMシステムのプロパティを設定して部分的に修正しました。 sun.net.client.defaultConnectTimeout

sun.net.client.defaultReadTimeout

(それらの詳細については、そのリンクに従ってください: http: /docs.oracle.com/javase/1.4.2/docs/guide/net/properties.html

まず、 "Connect timeout"のカスタム値を注入します。 プロパティー・ファイルに格納されている「Read Timeout」を「自家製」構成Beanを使用して次のように変更します。

   
    ...
    
    
    ...
    

次に、System.setProperty(...)メソッドを使用してJVMシステムのプロパティを設定します。

    System.setProperty(propName, value);

私は1つの問題が残っています:sun.net.client.defaultConnectTimeoutに設定された値 考慮に入れられていないようです。 もう少しテストをした後、プロキシサーバー(私の場合はSquid)を使ってターゲットホストにアクセスしようとしたときに発生することに気付きました。

ただし、その設定方法を使用するのは不便です。タイムアウト設定は、それ以降のすべての要求に使用されます

よろしく

0
追加された