java - 如何限制 Jersey 2 连接

标签 java connection jersey-2.0

我使用的代码与this中的代码类似。问题。

问题的代码副本带有注释掉的属性,就像我注释掉的一样。

import javax.ws.rs.client.Client;

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");
    target = target.queryParam("paramname", "paramvalue");
    target = target.queryParam("paramname2", "paramvalue2");

    try
    {
        String responseMsg;
        for (int i = 0; i < 50; i++)
            responseMsg = target.request(MediaType.APPLICATION_XML).get();

        System.out.println("responseMsg: " + responseMsg);
    }

    catch (ProcessingException pe)
    {
        pe.printStackTrace();
    }
}

我通过添加 for 循环稍微修改了原始代码。这个想法是 Jersey 只生成一个连接,而不是 50 个。

我遇到的问题是,与我通信的守护进程报告我在每次调用时都创建了一个新连接。

如何才能只有一个连接,然后将其用于每个通信事务?

最坏的情况是,我想关闭连接,但这看起来很愚蠢。创建连接会产生大量开销(如果没有其他情况,则在守护进程上并关闭它)。

守护进程在终端窗口上报告“允许连接”(CENTOS 7,但并不重要)。我通常在 Windows 7 桌面上运行客户端。我正在使用 Java 8 和 Eclipse Luna。经常发生的情况是,守护进程会说“已达到最大连接数”,然后继续做一些不好的事情。

最佳答案

我还没有完全测试过,但答案就在这个 other StackOverflow 中票。

我必须使用 ApacheConnectorProvider 对象。

Jersey 帮助文档第 5.5 节指出:

In a simple environment, setting the property before creating the first target is sufficient, but in complex
environments (such as application servers), where some poolable connections might exist before your
application even bootstraps, this approach is not 100% reliable and we recommend using a different client
transport connector, such as Apache Connector. These limitations have to be considered especially when
invoking CORS (Cross Origin Resource Sharing) requests. 

我正在做跨原始资源共享,所以我使用的简单方法不稳定。在我的小程序上使用 Apache Connector 是有效的。我能够使用迭代 500 次的 for 循环,没有任何问题,现在只需尝试真正的代码。

关于java - 如何限制 Jersey 2 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516612/

相关文章:

spring - 如果我们在 Spring Boot 中以编程方式配置数据源,那么 Spring Boot 数据源属性会起作用吗

java - Jersey : Detect when Controller Class is Created

java - 从文件中读取文本行

SharePoint 列表 Web 部件连接选项不可见

java - 如何让这段代码打印一个数字中有多少个素数?

entity-framework - Entity Framework - 我应该如何实例化我的 "Entities"对象

java - 如何在下面使用带有 Apache httpclient 的 jersey-client?

java - 如何在 singleton jersey 拦截器中使用 RequestScoped 对象?

java - 如何对使用该程序的人隐藏 MySQL 数据库的密码

java - Camel 中的 JPA 组件无法自动重新连接到数据库