我在wildfly上运行的java应用程序中遇到资源缺乏问题。 它正在对其他REST资源进行大量API调用,如果其中一个API:s速度变慢,我们的系统也会停止运行。
后端系统在14秒内没有响应。所以我希望我的应用程序在4秒后打破连接。
"问题"是我们使用Client
中的ClientBuilder
和javax.ws.rs.client
,我们使用wildfly作为实现。
所以我不知道如何设置这个超时参数。它似乎不可能来自代码,而且我对于哪个wildfly子系统受到影响以及要设置的属性感到非常遗憾。
之前是否有人这样做并且知道如何设置超时?
答案 0 :(得分:1)
您可以使用CONNECT_TIMEOUT Jersey客户端属性显示这些帖子:
答案 1 :(得分:0)
因此,由于wildfly捆绑了resteasy,你必须为特定的实现实现超时。那或者强迫野生动物使用别的东西。因为在野生动物身上强行穿着运动衫似乎不是最好的想法(或最简单的)我配置它。
http://blog.eisele.net/2014/12/setting-timeout-for-jax-rs-20-resteasy-client.html
import javax.ws.rs.client.Client;
import org.jboss.resteasy.client.jaxrs.ResteasyClient;
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
Client client = new ResteasyClientBuilder()
.establishConnectionTimeout(100, TimeUnit.SECONDS)
.socketTimeout(2, TimeUnit.SECONDS)
.build();
我在pom.xml中添加了以下内容:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.19.Final</version>
</dependency>
答案 2 :(得分:0)
鉴于 establishConnectionTimeout 和 socketTimeout 均已弃用。
redhat website 对 jboss v7.3 的解释:
<块引用>以下符合 ClientBuilder 规范的方法替换了某些已弃用的 RESTEasy 方法:
connectTimeout 方法取代了 establishConnectionTimeout 方法。
readTimeout 方法取代了 socketTimeout 方法。
这对我有用 RestEASY 3.12.1.Final:
private Client clientBuilder() {
return new ResteasyClientBuilder()
.connectTimeout(2, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.build();
}
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.12.1.Final</version>
</dependency>