在Jboss上为JAX-RS 2.0 / Resteasy客户端设置超时时间

3

我希望为每个调用rest客户端设置请求超时时间。目前我的代码如下:

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

问题在于,这可能只适用于get方法而不适用于其他方法。此外,套接字超时并非针对完整响应的读取超时,而是针对单个数据包的超时。有关 socketTimeout 和 connectionTimeout 的信息 我正在寻找类似于Jersey中以下解决方案的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);
1个回答

4
redhat网站所述,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);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接