java - 将 Jersey Client 与 Apache 连接器一起使用,超时不起作用

标签 java apache timeout jersey-2.0

我正在使用 Jersey Client 实现 Restful 客户端,如下所示:

ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 60000);
clientConfig.property(ClientProperties.READ_TIMEOUT, 60000);
Client client = ClientBuilder.newClient(clientConfig);

此代码一直工作正常,只要请求时间超过定义的值,就会正确抛出超时异常。然而,当我决定改用 ApacheConnector 时,如下所示:

ClientConfig clientConfig = new ClientConfig();    
clientConfig.register(JacksonFeature.class);       
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, connectionManager);
ApacheConnectorProvider provider = new ApacheConnectorProvider();        
clientConfig.connectorProvider(provider);
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 60000);
clientConfig.property(ClientProperties.READ_TIMEOUT, 60000);
Client client = ClientBuilder.newClient(clientConfig);

超时似乎不再起作用,所以现在当服务器无法响应时,我的客户端将继续等待,直到永远不会抛出超时异常。

以前有人遇到过这个问题或者知道我在这里做错了什么吗? 谢谢

最佳答案

尝试创建并注册一个org.apache.http.client.config.RequestConfig:

clientConfig.property(ApacheClientProperties.REQUEST_CONFIG, RequestConfig.custom()
  .setConnectTimeout(60000)
  .setSocketTimeout(60000)
  .build());

关于java - 将 Jersey Client 与 Apache 连接器一起使用,超时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25136040/

相关文章:

已安装 Apache 模块但似乎未在 Ubuntu 中加载

java - Linux JVM 的 JAX WS 服务器实现性能问题?

java - 图片库教程已弃用

macos - 如何重写 httpd-vhosts.conf 以允许 SSL 连接到私有(private) Web 服务器?

PHP 如何正确托管大文件?

tomcat - Nginx+Tomcat - 504 超时

javascript - jquery 使用多个 setTimeouts

java - 将 ArrayList 转换为字符串数组

java - 无法找到请求目标的有效证书路径 PKIX 路径构建失败 : sun. security.provider.certpath.SunCertPathBuilderException

php - 设置MySQL root密码时无法连接到 'localhost'处的服务器