【问题标题】:decrease Wildfly connection timeouts减少 Wildfly 连接超时
【发布时间】:2018-08-31 20:38:37
【问题描述】:

我的 java 应用程序在 wildfly 中运行时出现资源不足的问题。 它正在对其他 REST 资源进行大量 API 调用,如果其中一个 API 速度变慢,我们的系统也会出现故障。

后端系统在 14 秒内没有响应。所以我希望我的应用程序在 4 秒后断开连接。 “问题”是我们使用来自javax.ws.rs.clientClientClientBuilder,并且我们使用wildfly 作为实现。

所以我不知道如何设置这个超时参数。从代码中似乎不可能,而且我很不知道哪个 Wildfly 子系统受到影响以及要设置哪些属性。

有没有人这样做过并且知道如何设置超时?

【问题讨论】:

    标签: java jakarta-ee connection wildfly


    【解决方案1】:

    【讨论】:

    • 我不知道这在 java ee 8 中是标准化的......因为我们目前在 7 上并且没有使用您链接的任何供应商,我可能应该考虑将我们的环境升级到 java EE 8
    • 我认为迁移不是强制使用此功能,此post 于 2014 年发布,因此它可以在泽西岛使用。您可以先尝试使用您已经拥有的版本,以检查是否确实需要迁移。
    • 而且,如果这有助于您解决疑问,请不要忘记标记答案:)
    • 是的,我只是想在批准之前尝试一下。但在我们的具体案例中,我们没有使用 jersey 作为实现,这使得测试它变得特别困难
    【解决方案2】:

    因此,由于 wildfly 与 resteasy 捆绑在一起,因此您必须为该特定实现实现超时。那或迫使wildfly使用其他东西。由于在 Wildfly 上强制使用球衣似乎不是最好的(或最简单的)想法,因此我进行了配置。

    http://blog.eisele.net/2014/12/setting-timeout-for-jax-rs-20-resteasy-client.html

    import javax.ws.rs.client.Client;
    import org.jboss.resteasy.client.jaxrs.ResteasyClient;
    import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
    
     Client client = new ResteasyClientBuilder()
                    .establishConnectionTimeout(100, TimeUnit.SECONDS)
                    .socketTimeout(2, TimeUnit.SECONDS)
                    .build();
    

    我在 pom.xml 中添加了以下内容:

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-client</artifactId>
            <version>3.0.19.Final</version>
        </dependency>
    

    【讨论】:

      【解决方案3】:

      鉴于 establishConnectionTimeoutsocketTimeout 均已弃用。

      redhat website 对 jboss v7.3 的解释如下:

      以下符合 ClientBuilder 规范的方法替换了某些已弃用的 RESTEasy 方法:

      • connectTimeout 方法取代了 establishConnectionTimeout 方法。

        • connectTimeout 方法确定客户端在建立新的服务器连接时必须等待多长时间。
      • readTimeout 方法取代了 socketTimeout 方法。

        • readTimeout 方法确定客户端必须等待服务器响应的时间。

      这对我有用 RestEASY 3.12.1.Final

          private Client clientBuilder() {
              return new ResteasyClientBuilder()
                  .connectTimeout(2, TimeUnit.SECONDS)
                  .readTimeout(10, TimeUnit.SECONDS)
                  .build();
          }
      
              <dependency>
                  <groupId>org.jboss.resteasy</groupId>
                  <artifactId>resteasy-client</artifactId>
                  <version>3.12.1.Final</version>
              </dependency>
      

      【讨论】:

        猜你喜欢
        • 2010-11-10
        • 2013-08-25
        • 2013-02-09
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多