In jersey 1 we had a function setConnectTimeout in the class com.sun.jersey.api.client.Client
.
In jersey 2 the javax.ws.rs.client.Client
class is used where this function is missing.
How to set connection timeout and read timeout in jersey 2.x?
In jersey 1 we had a function setConnectTimeout in the class com.sun.jersey.api.client.Client
.
In jersey 2 the javax.ws.rs.client.Client
class is used where this function is missing.
How to set connection timeout and read timeout in jersey 2.x?
The code below works for me in Jersey 2.3.1 (inspiration found here: https://mcmap.net/q/330407/-javax-ws-rs-client-client-how-to-configure-readtimeout)
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
client.property(ClientProperties.CONNECT_TIMEOUT, 1000);
client.property(ClientProperties.READ_TIMEOUT, 1000);
WebTarget target = client.target("http://1.2.3.4:8080");
try {
String responseMsg = target.path("application.wadl").request().get(String.class);
System.out.println("responseMsg: " + responseMsg);
} catch (ProcessingException pe) {
pe.printStackTrace();
}
}
You may also specify a timeout per request :
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://1.2.3.4:8080");
// default timeout value for all requests
client.property(ClientProperties.CONNECT_TIMEOUT, 1000);
client.property(ClientProperties.READ_TIMEOUT, 1000);
try {
Invocation.Builder request = target.request();
// overriden timeout value for this request
request.property(ClientProperties.CONNECT_TIMEOUT, 500);
request.property(ClientProperties.READ_TIMEOUT, 500);
String responseMsg = request.get(String.class);
System.out.println("responseMsg: " + responseMsg);
} catch (ProcessingException pe) {
pe.printStackTrace();
}
}
client = client.property(...)
, because the property method returns updated configurable instance. Same with the request
. –
Somber Starting from jersey 2.26 (which uses JAX-RS 2.1) there are new methods for that:
ClientBuilder builder = ClientBuilder.newBuilder()
.connectTimeout(5000, TimeUnit.MILLISECONDS)
.readTimeout(5000, TimeUnit.MILLISECONDS);
//some more calls if necesary, e.g.
//.register(LoggingFilter.class);
Client restClient = builder.build();
© 2022 - 2024 — McMap. All rights reserved.