Dans le maillot 1, nous avions une fonction setConnectTimeout dans la classe com.Sun.jersey.api.client.Client
.
En maillot 2 le javax.ws.rs.client.Client
La classe est utilisée lorsque cette fonction est manquante.
Comment définir le délai de connexion et lire le délai dans jersey 2.x?
Le code ci-dessous fonctionne pour moi dans Jersey 2.3.1 (inspiration trouvée ici: https://stackoverflow.com/a/19541931/1617124 )
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();
}
}
Vous pouvez également spécifier un délai d'attente par demande:
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();
}
}