【问题标题】:Setting Timeout for JAX-RS 2.0 / Resteasy Client on Jboss在 Jboss 上为 JAX-RS 2.0 / Resteasy 客户端设置超时
【发布时间】:2019-04-19 13:07:22
【问题描述】:

我想为每个调用休息客户端设置一个请求超时。目前我有这个:

    private Client clientBuilder() {
    return new ResteasyClientBuilder()
            .establishConnectionTimeout(2, TimeUnit.SECONDS)
            .socketTimeout(10, TimeUnit.SECONDS)
            .build()
            .register(ClientRestLoggingFilter.class)
            .register(ObjectMapperContextResolver.class);
}

问题是,这可能不适用于 get 以外的其他方法。 更重要的是,套接字超时不是读取完整响应的超时,而是单个数据包的超时。 socketTimeout and connectionTimeout information

我正在为 RestEasy 寻找类似以下球衣的解决方案:

import org.glassfish.jersey.client.ClientProperties;

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

【问题讨论】:

    标签: java rest jersey resteasy


    【解决方案1】:

    正如redhat website 对 jboss v7.3 的解释:

    以下符合 ClientBuilder 规范的方法替换了某些已弃用的 RESTEasy 方法:

    • connectTimeout 方法取代了 establishConnectionTimeout 方法。

      • connectTimeout 方法确定客户端在建立新的服务器连接时必须等待多长时间。
    • readTimeout 方法取代了 socketTimeout 方法。

      • readTimeout 方法确定客户端必须等待服务器响应的时间。

    所以这应该对你的情况有好处:

        private Client clientBuilder() {
            return new ResteasyClientBuilder()
                .connectTimeout(2, TimeUnit.SECONDS)
                .readTimeout(10, TimeUnit.SECONDS)
                .build()
                .register(ClientRestLoggingFilter.class)
                .register(ObjectMapperContextResolver.class);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多