当前位置: 首页 > 知识库问答 >
问题:

如何使用Jersey 2设置连接和读取超时。十、

卢深
2023-03-14

在泽西1中,我们在类com.sun.jersey.api.client.Client中有一个函数setConnectTimeout。

在jersey 2中,javax。ws。客户。客户端类用于缺少此函数的地方。

如何设置连接超时和读取超时在泽西2. x?

共有3个答案

谢誉
2023-03-14

从jersey 2.26(使用JAX-RS 2.1)开始,有了一些新的方法:

ClientBuilder builder = ClientBuilder.newBuilder()
        .connectTimeout(5000, TimeUnit.MILLISECONDS)
        .readTimeout(5000, TimeUnit.MILLISECONDS);
        //some more calls if necesary, e.g.
        //.register(LoggingFilter.class);
            
        Client restClient = builder.build();
松高歌
2023-03-14

您还可以为每个请求指定超时:

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();
    }
}
督飞羽
2023-03-14

下面的代码适用于我在泽西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();
    }
}
 类似资料:
  • 问题内容: 在jersey 1中,我们在类中具有一个函数setConnectTimeout。 在球衣2中,缺少此功能的地方使用该类。 如何在jersey 2.x中设置连接超时并读取超时? 问题答案: 下面的代码在Jersey 2.3.1中对我有用(灵感在这里找到:https :

  • 因为我计划从v.3升级httpclient依赖项。第1至第4节。5.13,但后来我意识到,许多功能已经改变,其中之一就是多线程HttpConnectionManager已经从最新版本中删除。当我搜索一个等价类时,stackoverflow HttpClient 4中的一篇文章——多线程HttpConnectionManager发生了什么事?,建议使用PoolightTPClientConnecti

  • 问题内容: 我正在使用API(,和,和朋友)对远程服务器进行Web服务调用,这在很大程度上取得了很大的成功。 但是,有时会出现问题,并且程序永远卡住。 为了解决这个问题,我想添加一个读取超时。 我发现有几种方法可以实现这一目标,但它们似乎都非常糟糕。 所以我对社区的问题是:使用javax.xml.soap API进行调用时,实现读取超时行为的最佳方法是什么? 问题答案: 您必须创建自己的URLSt

  • 问题内容: 我正在使用PDO从MySQL服务器获取数据。我注意到的是:如果MySQL服务器不可用,则此代码返回异常 实际上 需要(相对)长的时间: 如果使用MySQL,则发生异常(SQLSTATE [HY000] [2003]无法在…上连接到MySQL服务器)仅需2分钟以上,而在PostgreSQL上则需要30秒(SQLSTATE [08006] [7]超时已过期) )。 我尝试使用PDO ::

  • 我有一个netty服务器,它接收来自客户端的请求,向另一个服务器发出请求,然后在对原始客户端请求的响应中使用来自第二个请求的响应。我希望对第二台服务器的请求有一个较短的超时(~40ms),以便在超时时发送一般响应,但我不想关闭与第二台服务器的连接。相反,我将在超时请求到达时放弃响应,然后将连接返回到我的池。 在Netty最好的方法是什么?我尝试过ReadTimeoutHandler,但当超时发生时

  • 我知道volley有一个重试策略,但我知道,这是针对套接字超时,而不是连接超时,Apache HttpClient有setConnectionTimeout和setSoTimeout方法,有人知道我是否要为volley framework设置连接超时吗。