0

タイムアウトを自分のコードに追加する必要がありますが、これは自分のコードですが、このコードを変更してタイムアウトを追加する方法はありません。RestTemplateでタイムアウトを追加する方法

`

@EBean(scope = EBean.Scope.Singleton) 
public class KioraRestClient { 

public static final String SERVER_HOST   = KioraBuildConfig.REST_SERVER_API_URL; 
public static final String VERSION_SERVER_HOST = KioraBuildConfig.REST_VERSION_SERVER_API_URL; 


@AfterInject 
void Initialize() { 

    try { 
     turnOffSslChecking(); 
    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } catch (KeyManagementException e) { 
     e.printStackTrace(); 
    } 

    // this factory needs to be crated here since requires some injected dependencies 
    ClientHttpRequestFactory keyPairRequestFactory = new KioraHttpRequestFactory(
      new ContentAuthUriDecorator(authPreferences) 
    ); 

    ClientHttpRequestFactory timeoutFactory = new SimpleTimeoutRequestFactory();   


    //TODO: Extract common interface for the controllers 
    LicenseController.getRestTemplate().setRequestFactory(keyPairRequestFactory); 
    UserController.getRestTemplate().setRequestFactory(keyPairRequestFactory); 
    ContentController.getRestTemplate().setRequestFactory(keyPairRequestFactory); 

    VersionController.getRestTemplate().setRequestFactory(timeoutFactory); 
    RootIPController.getRestTemplate().setRequestFactory(keyPairRequestFactory); 

    PurchaseController.getRestTemplate().setRequestFactory(keyPairRequestFactory); 
    HotspotController.getRestTemplate().setRequestFactory(keyPairRequestFactory); 

`

`

HttpComponentsClientHttpRequestFactory httpRequestFactory = new  HttpComponentsClientHttpRequestFactory(); 
httpRequestFactory.setConnectTimeout(20 * 1000); 
PurchaseController.getRestTemplate().setRequestFactory(httpRequestFactory); 
    HotspotController.getRestTemplate().setRequestFactory(httpRequestFactory); 

`

+0

効果を取って見ることができます。ところで、私は古いHTTPコンポーネントの代わりにokhttpを使うことをお勧めします。 – WonderCsabo

+0

タイムアウトの設定で何を達成したいですか? http://stackoverflow.com/questions/3069382/what-is-the-difference-between-connection-and-read-timeout-for-sockets –

+0

私は応答を待ってから、残りのことをする必要があります – elsa

答えて

0

を私はこのようなタイムアウトを追加しようとしたが、20のseccond年代のこのタイムアウトは効果があるとは思えません接続タイムアウトを読み取りタイムアウトに設定するだけです。接続タイムアウトは、接続を中止するまでにどれくらい待つかを定義します。ただし、読み取りタイムアウトは応答を待つ時間を定義します。

が設定されたリードタイムアウトと同じように、あなたはそれがこれが唯一の基盤となるHTTPライブラリに、残りのテンプレートに関連していない

httpRequestFactory.setReadTimeout(20 * 1000); 

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html#setReadTimeout-int-

関連する問題