【问题标题】:org.glassfish.jersey.client.ClientProperties timeouts don't work on WildFlyorg.glassfish.jersey.client.ClientProperties 超时不适用于 WildFly
【发布时间】:2016-07-10 10:20:24
【问题描述】:

我有以下代码来支持 HTTP 超时:

    Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);
    client.property(ClientProperties.CONNECT_TIMEOUT, 1000);
    client.property(ClientProperties.READ_TIMEOUT, 1000);
    WebTarget target = client.target(url);
    Response response = target.request(MediaType.APPLICATION_JSON_TYPE).post(null, Response.class);

它适用于独立的 Java 应用程序。它等待 1000 毫秒的响应,然后出现 java.net.SocketTimeoutException

我需要在 WildFly 8.2.0 上使用此代码。问题是在等待 1000 毫秒后什么也没有发生。此代码等待无限时间。我猜ClientProperties.CONNECT_TIMEOUTClientProperties.READ_TIMEOUT 不适合WildFly。可能我必须使用其他常量。有人知道是什么问题吗?

【问题讨论】:

    标签: java timeout jax-rs wildfly


    【解决方案1】:

    ClientProperties 是特定于球衣的类,其属性是特定于球衣的。 Wildfly 使用 RestEasy 作为其 JAX-RS 提供程序。

    你可以在这里配置底层的Apache HttpClient:https://docs.jboss.org/resteasy/docs/3.0.17.Final/userguide/html/RESTEasy_Client_Framework.html

    在 HttpClient 中配置超时:https://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/

    【讨论】:

    • 感谢您的回答。由于 ClientProperties 常量,我是否必须重写整个代码(对于 http 请求)并更改依赖关系? (尽管 http 请求被正确执行)。好像有点奇怪:(
    • 嗯,您正在利用 impl 特定行为。我通常创建一个生产者方法并以这种方式连接到客户端。这样它只触及一个点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多