如何在Jersey客户端中获取默认超时

时间:2018-07-04 02:30:30

标签: java jersey-client

我正在使用Jersey核心客户端连接到外部服务。我想知道泽西岛的默认超时设置。任何想法?我正在使用泽西岛2.26。

感谢和问候。

请注意,我并不是在问如何为Jersey客户端设置超时,该客户端已经在此处提供了很好的答案:How to set the connection and read timeout with Jersey 2.x?

我只担心知道默认超时值。谢谢。

2 个答案:

答案 0 :(得分:3)

根据jersey api docs中的文档,默认情况下,客户端中的READ_TIMEOUT和CONNECT_TIMEOUT均为0(无穷大)。

答案 1 :(得分:0)

根据Jersey文档

  

默认情况下,没有定义超时,即客户端的读取和连接超时为无穷大。

请参阅https://jersey.github.io/documentation/latest/async.html#d0e9989

如果要设置超时,可以参考Jersey文档中的以下代码段

@GET
public void asyncGetWithTimeout(@Suspended final AsyncResponse asyncResponse) {
    asyncResponse.setTimeoutHandler(new TimeoutHandler() {

        @Override
        public void handleTimeout(AsyncResponse asyncResponse) {
            asyncResponse.resume(Response.status(Response.Status.SERVICE_UNAVAILABLE)
                    .entity("Operation time out.").build());
        }
    });
    asyncResponse.setTimeout(20, TimeUnit.SECONDS);

    new Thread(new Runnable() {

        @Override
        public void run() {
            String result = veryExpensiveOperation();
            asyncResponse.resume(result);
        }

        private String veryExpensiveOperation() {
            // ... very expensive operation that typically finishes within 20 seconds
        }
    }).start();
}