【问题标题】:Set timeout to JAX-RS client with CXF使用 CXF 为 JAX-RS 客户端设置超时
【发布时间】:2018-03-23 11:54:23
【问题描述】:

我需要为以下客户端或配置设置自定义超时:

import org.apache.cxf.jaxrs.client.Client;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.jaxrs.client.ClientConfiguration;

Client client = WebClient.client(api);
ClientConfiguration config = WebClient.getConfig(client);

我阅读了this,尤其是this,但我在我的对象中找不到那些建议的属性或方法。我宁愿不更改对象类型。

【问题讨论】:

    标签: timeout jax-rs cxf


    【解决方案1】:

    导入 org.apache.cxf.transport.http.HTTPConduit;

    导入 org.apache.cxf.transports.http.configuration.HTTPClientPolicy;

    客户端客户端 = WebClient.client(api);

    HTTPConduit http = (HTTPConduit) client.getConduit();

    HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); httpClientPolicy.setConnectionTimeout(0);

    httpClientPolicy.setReceiveTimeout(0);

    http.setClient(httpClientPolicy);

    【讨论】:

    • 这很接近,但我必须使用来自ClientConfigurationconduit 而不是Client
    【解决方案2】:

    我需要将此添加到我之前发布的代码中:

    HTTPConduit conduit = config.getHttpConduit();
    conduit.getClient().setReceiveTimeout(150000);
    //conduit.getClient().setConnectionTimeout(120000);
    

    它奏效了。我只需要设置接收超时,但连接超时设置也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 2015-01-03
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多