Rest Clientで作業していて、[〜#〜] cxf [〜#〜]をJAX-RSと一緒に使用しています。
私の問題は、クライアントのデフォルトのタイムアウト値を上書きする方法が見つからないことです。
シンプルなクライアント:
_Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/MyApp");
target = target.path("jsp/Test.jsp");
Response response = target.request().get();
_
[〜#〜] cxf [〜#〜]にReceiveTimeout
およびConnectionTimeout
と呼ばれる2つのタイムアウトプロパティがあることを読みましたが、私のクライアントでそれらを設定する方法。
私はclient.property("ReceiveTimeout", 5000);
を試しましたが、うまくいきません。
xml構成ファイルを使用してクライアントを構成する例を確認しましたが、可能であればそのパスを使用しない方がよいでしょう。
何か案は?
あなたはこのようなことを試すことができます:
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(30000);
http.setClient(httpClientPolicy);
HTTPConduit conduit = WebClient.getConfig(webClient).getHttpConduit();
conduit.getClient().setConnectionTimeout(1000 * 3);
conduit.getClient().setReceiveTimeout(1000 * 3);
Org.Apache.cxf.jaxrs.client.spec.ClientImpl: "http.connection.timeout"および "http.receive.timeout"で正しいプロパティを見つけることができます。
したがって、クライアントを構築するときに、それらをプロパティとして使用します。
ClientBuilder.newClient().property("http.receive.timeout", 1000);
JAX-RS 2.1(CXF 3.2からサポート)では、ClientBuilderで次の標準メソッドを使用できます。
connectTimeout(long timeout, TimeUnit unit);
readTimeout(long timeout, TimeUnit unit);