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

连接不能与泽西、ApacheConnectorProvider和PoolingHttpClientConnectionManager重用

袁弘化
2023-03-14

我们将Jersey与ApacheConnectorProvider和PoolighttpClientConnectionManager一起用于池连接管理。

ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, defaultConnectTimeout);
clientConfig.property(ClientProperties.READ_TIMEOUT, defaultReadTimeout);
        
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(50);
cm.setDefaultMaxPerRoute(5);
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, cm);

clientConfig.connectorProvider(new ApacheConnectorProvider());

问题是这些连接没有被重用。获取响应并使用响应读取实体时。readEntity(),则连接将关闭并从池中删除。

一经答复。readEntity()正在执行以下关闭操作:

ConnectionHolder.close()  -> 
 ConnectionHolder.releaseConnection(reusable=false)

releaseConnection()是使用reusible=false调用的,这会导致问题。

我们正在使用泽西2.22.2,我尝试了多个http客户端- 4.5, 4.5.2, 4.5.12,对于所有这些都有几乎相同的问题。

还有其他配置吗?还是我错过了什么?因为这似乎是个大问题。

共有1个答案

凌嘉勋
2023-03-14

我发现它是在Jersey 2.29中修复的,你可以在这里看到:https://github.com/eclipse-ee4j/jersey/issues/4024

因为我们在Jersey 2.22中使用Payara服务器。2,我无法将Jersey的版本更新为2.29,但修复程序只包括一个文件ApacheConnector,它是Jersey apache connector的一部分,因此我尝试将Jersey apache connector仅更新为2.29,并且成功了。

jersey apache connector不是Payara内置的,所以我可以使用我想要的任何版本。

在大多数情况下,让一些泽西工件使用一个版本和其他工件使用不同的版本不是一个好主意,但是否则我们就不会有可重用的连接,而且我还没有发现与其他泽西2.22.2工件的任何兼容性问题,希望没有。

 类似资料:
  • 我正在尝试使用JAX-RS(Jersey)构建JSON RESTful Webservice。我也在使用Maven构建应用程序。 我的第一个方法是 pom之后。xml- 所以我补充道 到我的pom文件。其他lib文件(例如jackson-cors-asl-1.7.1.jar、jackson-jaxrs-1.7.1.jar、jaxb impl,…)也可以在生成的war文件中找到//编辑:它还下载st

  • 我正在开发一个REST Web服务,其中我使用URL中的ID来指定患者,如下所示: <代码>WS/服务/患者/1 其中“1”是患者的id。所以,在代码中,我这样指定: 我在一个例子中看到了它,但是我的失败了。我得到了这个错误: 通用域名格式。太阳运动衫应用程序编程接口。容器ContainerException:方法,public void PresentationLayer。PatientReso

  • 我使用带有spring boot的jersey,我有一个异常映射器: 同样注册,并使用调试,我可以看到这个映射器被正确调用,但是无论使用junit测试还是手动测试,最终响应仍然返回404。 以下是测试: 然后在泽西岛配置中注册:

  • 我花了太多的时间(我想超过10个小时)试图弄清楚如何让基本的json调用(来自angularjs)在我的泽西2.4上打开和处理。我已经在谷歌上尝试了所有可能的结果,但仍然在得到一个 415(不支持的媒体类型) 客户端和 组织。玻璃鱼。运动衫消息内部的MessageBodyProviderNotFoundException:找不到媒体类型=应用程序/json,类型=类的MessageBodyRead

  • 我无法上传新泽西州的文件。使用泽西1.9。InputStream到达服务时为空。我尝试过将其作为普通表单提交和使用jQuery表单插件的AJAX提交,但结果都是一样的。也没有记录任何异常,这让它更加令人沮丧。 HTML表单 聚甲醛 Eclipse中的依赖层次结构显示mimepull.jar1.6也被引入。 剩下的服务 如果我添加@FormDataParam(“fileupload_name”)Fo