web-dev-qa-db-fra.com

Comment configurer la connexion et lire le délai d'attente avec Jersey 2.x?

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?

48
David Michael Gang

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();
    }
}
64
Lars

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();
    }
}
36
Siggen