gpt4 book ai didi

SocketTimeoutException 上的 java jersey 重试请求

转载 作者:行者123 更新时间:2023-11-29 04:45:50 25 4
gpt4 key购买 nike

我有一个 Jersey 客户端,想在 SocketTimeoutException 上实现重试,这是我在服务器日志中看到的错误。代码框架如下。 webtarget 是一个 javax.ws.rs.client.WebTarget 实例,其中已经定义了 url 路径和查询参数。我面临的问题是 webtarget.request.get() 从不抛出任何 SocketTimeoutException,所以我实际上无法捕获此异常。有什么想法可以实际实现重试吗?

int i = 0;
Response response;
while (true) {
try {
response = webtarget.request().get();
break;
} catch (SocketTimeoutException e){
if (i < retryNumber) {
i++;
} else {
// throws some exception
}
}
}

最佳答案

我最终找到了解决方案。事实证明,SocketTimeoutException 被映射到一个 ProcessingException,它实际上是由 Jersey 客户端抛出的。所以下面的代码有效

int i = 0;
Response response;
while (true) {
try {
response = webtarget.request().get();
break;
} catch (ProcessingException e){
if (e.getCause() instanceof SocketTimeoutException && i < retryNumber) {
i++;
} else {
// throws some exception
}
}
}

关于SocketTimeoutException 上的 java jersey 重试请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37244264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com