为 JAX-RS 2.0 客户机 API 设置请求超时

2022-09-01 11:14:31

我编写了简单的 REST Web 服务客户机类,它使用 JAX-RS 2.0 客户机 API 来发出 REST 请求。我正在尝试弄清楚如何为每个调用设置请求超时。下面是请求的代码:

Client client = ClientBuilder.newBuilder().build();
WebTarget resourceTarget = client.target(restServiceUrl)
        .path("{regsysID}/{appointmentID}/")
        .resolveTemplate("regsysID", regSysId)
        .resolveTemplate("appointmentID", apptId);

Invocation invocation = resourceTarget.request(MediaType.APPLICATION_JSON).buildPut(null);
String createSessionJson = invocation.invoke(String.class);

答案 1

注: 这是 JAX-RS 2.1 上提供的新方法

这是一个非常古老的帖子,但下面的代码将适用于球衣和躁动不安。

ClientBuilder clientBuilder = ClientBuilder.newBuilder();
clientBuilder.connectTimeout(10, TimeUnit.SECONDS);
clientBuilder.readTimeout(12, TimeUnit.SECONDS);
Client client = clientBuilder.build();

答案 2

为此,请先创建客户端配置,然后在创建新客户端时将其作为参数提供。

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);