RestTemplateのタイムアウト設定

RestTemplateは、REST API(Web API)を呼び出すためのメソッドを提供するクラスであり、 Spring Frameworkが提供するHTTPクライアントである。

JavaConfigでのBean定義

@Configuration
public class AppConfig {
	@Bean
	RestTemplate restTemplate() {
		SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
		// サーバーとの接続タイムアウト時間(ミリ秒)を設定する
		// タイムアウト発生時は「org.springframework.web.client.ResourceAccessException」が発生すする
		requestFactory.setConnectTimeout(5000);
		// レスポンスデータの読み込みタイムアウト時間(ミリ秒)を設定する
		// タイムアウト発生時は「org.springframework.web.client.ResourceAccessException」が発生する
		requestFactory.setReadTimeout(3000);
		return new RestTemplate(requestFactory);
	}
}

bean定義ファイル(applicationContext.xml)の定義例

<bean id="clientHttpRequestFactory"
      class="org.springframework.http.client.SimpleClientHttpRequestFactory"><!-- (1) -->
    <property name="connectTimeout" value="${api.connectTimeout: 2000}" /><!-- (2) -->
    <property name="readTimeout" value="${api.readTimeout: 2000}" /><!-- (3) -->
</bean>

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
    <constructor-arg ref="clientHttpRequestFactory" /><!-- (4) -->
</bean>

(1)ClientHttpRequestFactoryのbean定義を行う。

(2)connectTimeoutプロパティにサーバとの接続タイムアウト時間(ミリ秒)を設定する。
タイムアウト発生時はorg.springframework.web.client.ResourceAccessExceptionが発生する。

(3)readTimeoutプロパティにレスポンスデータの読み込みタイムアウト時間(ミリ秒)を設定する。
タイムアウト発生時はResourceAccessExceptionが発生する。

(4)ClientHttpRequestFactoryを引数に指定するコンストラクタを使用してbeanを登録する。

スポンサーリンク
google 6948682462
google 6948682462

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
google 6948682462