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

Apache HttpClient:如何根据服务器的保持时间自动关闭连接?

严玉泽
2023-03-14
PoolingHttpClientConnectionManager connectionManager;
HttpClient httpclient;
connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setDefaultMaxPerRoute(5);
httpclient = HttpClientBuilder.create().setConnectionManager(connectionManager).build();

共有1个答案

文喜
2023-03-14

这个问题在HttpClient教程中有详细说明

经典阻塞I/O模型的一个主要缺点是,网络套接字只有在I/O操作中阻塞时才能对I/O事件做出反应。当一个连接被释放回manager时,它可以保持活动状态,但是它无法监视套接字的状态和对任何I/O事件做出反应。如果连接在服务器端被关闭,客户端连接将无法检测到连接状态的变化(并通过关闭其端部的套接字来做出适当的反应)。

如果您希望从连接池中主动清除过期的连接,则没有办法运行额外的线程,强制执行适合您的应用程序的连接清除策略。

 类似资料:
  • 当应用程序完全关闭时,Whatsapp如何保持与套接字的连接。 它要求APNS推送首先唤醒应用程序,然后重新建立连接。但是WhatsApp怎么样?似乎是Appstore的合规问题?但是AppStore允许许多应用程序在后台运行,但它是否允许Pubnub或有连接的应用程序在后台保持活力?

  • 我们在ELB日志中看到504个错误,但是在应用程序日志中没有相应的错误。增加了ELB上的空闲超时,可以看到没有任何请求比这更花时间。查看aws留档发现,我们需要将ec2实例的保活时间配置为等于或大于空闲超时,以保持elb和后端服务器之间的连接打开。找不到任何方法来配置elb和后端服务器之间的保活时间。任何这样做的建议都会有帮助 我们使用tomcat ebs作为后端服务器。

  • 我的springboot微服务依赖于AS400 DB2,当服务启动时,它可能会关闭。该服务有一个配置bean,它有autowired的基于JpaRepository的存储库。在启动期间,当DB2关闭时,我得到以下消息:

  • 事实上,我正在制作一个Minecraft插件,我想知道一些插件(不使用DB)是如何在服务器关闭时保存信息的。 例如,如果我们制作了一个等级插件,并创建了一个不同的列表,或者我们将构成每个等级插件的玩家堆叠起来。当服务器关闭并随后重新启动时,列表将再次变为空(当我初始化它们时)。 所以我想知道是否有人知道如何保存这些信息。

  • 我想了解应该如何处理保持活动状态,特别是服务器由于超时或使用单个套接字处理的请求的人为限制而关闭保持活动状态连接的“情况”。我知道从关闭的套接字读取将返回0。在这种情况下,客户端应该怎么办?它是否尝试打开新连接? 下面的测试代码确实定期执行超文本传输协议请求: 当套接字被服务器关闭时,我没有看到任何异常。这是否意味着当客户端尝试在内部打开新套接字时,只要它正常工作,任何[关于旧套接字被关闭而新套接