55

jersey 1では、クラスに関数setConnectTimeoutcom.sun.jersey.api.client.Clientがありました。

jersey 2 ではjavax.ws.rs.client.Client、この関数が欠落している場所でクラスが使用されます。

jersey 2.xで接続タイムアウトと読み取りタイムアウトを設定するには?

4

3 に答える 3

76

以下のコードは、Jersey 2.3.1 で機能します (インスピレーションはここにあります: 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();
    }
}
于 2013-10-24T09:17:36.430 に答える
39

リクエストごとにタイムアウトを指定することもできます:

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();
    }
}
于 2016-03-17T09:28:56.380 に答える