[解決済み] Spring RestTemplateのタイムアウト
質問
Webアプリケーションで使用するレストサービスの接続タイムアウトを設定したいのですが、どうすればよいですか? 私はSpringのRestTemplateを使用して、私のサービスと会話しています。 私はいくつかの研究を行い、私はタイムアウトを設定するために意図されていると信じている以下のXML(私のアプリケーションXMLに)を見つけ、使用しました。 私はSpring 3.0を使用しています。
また、同じ問題をここで見ました。 RestTemplateを使用したSpring Webサービスのタイムアウト設定 が、その解決策はないようです。 クリーン タイムアウトの値はSpringのコンフィグで設定したい。
<bean id="RestOperations" class="org.springframework.web.client.RestTemplate">
<constructor-arg>
<bean class="org.springframework.http.client.CommonsClientHttpRequestFactory">
<property name="readTimeout" value="${restURL.connectionTimeout}" />
</bean>
</constructor-arg>
</bean>
readTimeoutをどのように設定しても、次のようになるようです。
ネットワークケーブルが切断されました。 約20秒間待機し、以下の例外が報告されます。
org.springframework.web.client.ResourceAccessExcep tion: I/Oエラー。ネストされた例外は java.net.NoRouteToHostException.No route to host: connect です。ホストへのルートがありません: 接続してください
URLが正しくないため、レストサービスから404が返されました。 約10秒待って、次のような例外が報告されます。
org.springframework.web.client.HttpClientErrorException: 404 Not Found
私の要件では、タイムアウトを短くする必要があるので、これらを変更できるようにする必要があります。 何が間違っているのか、何かアイデアはありますか?
ありがとうございました。
解決方法は?
ようやく動作するようになりました。
私たちのプロジェクトには、commons-httpclient jarの2つの異なるバージョンがあったことが原因だと思います。 それを解決したら、2つのことができることがわかりました。
コードでは、次のように記述します。
HttpComponentsClientHttpRequestFactory rf =
(HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory();
rf.setReadTimeout(1 * 1000);
rf.setConnectTimeout(1 * 1000);
このコードが最初に呼び出されたとき、タイムアウトを設定するために
HttpComponentsClientHttpRequestFactory
クラスが使用する
RestTemplate
. したがって、それ以降の
RestTemplate
は、上記で定義されたタイムアウト設定を使用します。
あるいは、もっと良い方法は、こうすることです。
<bean id="RestOperations" class="org.springframework.web.client.RestTemplate">
<constructor-arg>
<bean class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory">
<property name="readTimeout" value="${application.urlReadTimeout}" />
<property name="connectTimeout" value="${application.urlConnectionTimeout}" />
</bean>
</constructor-arg>
</bean>
を使うところは
RestOperations
インターフェイスを使用し、プロパティファイルからタイムアウト値を取得します。
関連
-
[解決済み】クライアントが送信したリクエストは構文的に正しくありません -Spring MVC + JDBC Template
-
[解決済み] ユニットテストから ApplicationContext を読み込むのに失敗しました。FileNotFound
-
[解決済み] ResourceBundleViewResolverでviews.propertiesが必要な理由
-
[解決済み] mvc:annotation-driven はバインドされていません。
-
[解決済み] Reduxのアクションをタイムアウトでディスパッチする方法とは?
-
[解決済み] Spring RestTemplateのパラメータ付きGET
-
[解決済み】 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
-
[解決済み】Spring RestTemplateリクエストに "Accept: "ヘッダーを設定する方法は?
-
[解決済み] MockitoでSpringの自動配線された@Valueフィールドをモックするにはどうすればよいですか?
-
[解決済み] Spring Boot RESTサービスの例外処理
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Unit TestからApplicationContextを読み込むのに失敗しました。FileNotFound
-
[解決済み] mvc:annotation-driven はバインドされていません。
-
Tomcat server_A 子コンテナの起動に失敗しました。
-
applicationContext の読み込みに失敗しました。
-
SLF4J:クラスパスに複数のSLF4Jバインディングが含まれる問題 解決済み
-
アーティファクトXXXXが見つからず、Mavenにalibaba.cloudの依存関係を導入することができませんでした。
-
[解決済み] java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log
-
[解決済み] java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
-
[解決済み] Spring DataでOrderByをfindAllで使用する方法
-
[解決済み] コンテンツタイプ 'application/x-www-form-urlencoded;charset=UTF-8' は @RequestBody MultiValueMap ではサポートされていません。