作者:荆梦梦丶乐园 | 来源:互联网 | 2023-05-23 15:34
我正在使用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
但我还没有找到一种方法在我的客户端中设置它们.
我试过client.property("ReceiveTimeout", 5000);
但它不起作用.
我已经看到了使用xml配置文件配置客户端的示例,但如果可能,我不想采用该路径.
有任何想法吗?
1> 小智..:
HTTPConduit cOnduit= WebClient.getConfig(webClient).getHttpConduit();
conduit.getClient().setConnectionTimeout(1000 * 3);
conduit.getClient().setReceiveTimeout(1000 * 3);
2> Dennis Kiese..:
您可以在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);
另见:https://github.com/jax-rs/api/issues/467