- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用例,其中 servlet(具有相当高的并发使用)创建传出 URLConnection 来检索一些数据 REST 样式,作为其正常服务器端处理逻辑的一部分。每次调用 servlet 时都会创建并使用连接,因为 URL 可能不同(但域始终相同)。我想确保它尽可能以最佳方式执行此操作,以便端口和连接保持打开状态的时间不会超过它们在应用程序服务器上所需的时间,但会在适用的情况下重新使用。
Javadocs 似乎有点模糊 - 关于 URLConnection:
“在请求后调用 URLConnection 的 InputStream 或 OutputStream 上的 close() 方法可能会释放与此实例关联的网络资源,除非特定协议(protocol)规范为其指定了不同的行为。”
在 HttpURLConnection 上:
'每个 HttpURLConnection 实例都用于发出单个请求,但到 HTTP 服务器的底层网络连接可以由其他实例透明地共享。请求后调用 HttpURLConnection 的 InputStream 或 OutputStream 上的 close() 方法可能会释放与此实例关联的网络资源,但对任何共享持久连接没有影响。如果持久连接当时处于空闲状态,则调用disconnect() 方法可能会关闭底层套接字。'
当前,正在使用 URLConnection 并且仅关闭输入流,如下面的代码所示(错误处理和 URL 读取已删除,因为它们与问题无关)。我的想法是,这将清理流资源,但如果可能的话,允许重用底层套接字(因为请求始终是同一域,具有不同的 URL 路径)。任何有关如何进一步优化的建议将不胜感激。
URL requestUrl = new URL(location);
URLConnection urlConnection = requestUrl.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
//reading code here
br.close();
最佳答案
您可以考虑使用 Apache 的 HttpClient。我们在一个应用程序中使用它,该应用程序每天发送请求数百万次,并在少数系统上进行负载平衡。我们使用了 HttpClient 对象池,我不确定这是否必要,因为我们没有在调用之间保持连接打开,但代码早于我在这里的时间,也许他们找到了原因。
关于java - 如何在高使用率的多线程环境中以最佳方式清理传出的 UrlConnection 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1289688/
我想创建一个 Mercurial Hook ,当我推送到本地存储库时,它会推送到备份远程存储库。我以为我可以钩住“传出”钩子(Hook),但这会创建一个不漂亮的无限循环。那么是否有类似推送后的 Hoo
我有一个托管在 Tomcat 上的应用程序,它需要通过 IBM DataPower 设备对托管的服务进行 HTTPS 调用。我在日志中看到以下内容: http-bio-8080-exec-1, REA
是否有一个 hg 命令可以组合 hg传入 + hg传出 + hg status? 这会告诉您是否有任何远程内容需要传入,是否有任何本地提交的内容需要出去,或者是否有任何本地更改需要提交。 最佳答案 虽
我在 Azure 中有一个 Windows VM,用于 VS2015 实验。 Google 云端硬盘无法联系更新服务器来完成其自身的安装(尽管 Chrome/Omaha 工作正常)。 显然,我也无法通
我正在使用 QuickFIX/J (1.6.4)。我可以看到所有消息都非常正确地隔离(传入/传出/事件) , event> (Session FIX.4.2:CLIENT2/SUB-> sched
我在 Azure 中有一个 Windows VM,用于 VS2015 实验。 Google 云端硬盘无法联系更新服务器来完成其自身的安装(尽管 Chrome/Omaha 工作正常)。 显然,我也无法通
我正在使用 QuickFIX/J (1.6.4)。我可以看到所有消息都非常正确地隔离(传入/传出/事件) , event> (Session FIX.4.2:CLIENT2/SUB-> sched
我正在使用 docker-compose 运行我的应用程序。该应用程序包含许多容器。一个容器有一个 node.js 应用程序,另一个容器有一个 .net 核心应用程序。当尝试从任何容器向外部服务器发送
我想将文件从 HDFS 传输到不在 hadoop 集群中但在网络中的不同服务器的本地文件系统。 我本可以做到: hadoop fs -copyToLocal and then scp/ftp .
我遇到了一个奇怪的偶然事件,我的结果 lsof | grep 40006 制作 java 29722 appsrv 54u IPv6 71135755
我错误地 checkin 了一些更改。现在更改正在传出更改中,但我不希望它们交付。我怎样才能让它们回到 Unresolved 状态?如果我丢弃它们,它们就会从我的源代码中消失,我就会失去我的工作。 最
我在将 URL 参数添加到每个生成的 URL 或重定向到 ASP MVC 4 应用程序时遇到问题。 我想生成一个 ID,并在整个应用程序的任何时候使用这个 ID。在 session 中存储 id 不是
我正在开发一个 Java/Spring Web 应用程序,它对每个传入请求执行以下操作: 向第三方网络服务器发出大量请求, 检索每个人的响应, 将每个响应解析为 JSON 对象列表, 将 JSON 对
我有一个基本的“包装器”WinForms 应用程序,它有一些基本控件和一个 WebBrowser 控件 (System.Windows.Forms.WebBrowser)。这链接到一个网络服务,它完成
这个问题在这里已经有了答案: Can I send webrequest from specified ip address with .NET Framework? (3 个答案) 关闭 8 年前
我在这项研究中对交通路口进行研究,我试图找到有影响力的节点,也就是说......哪些路口会相互影响,我试图将我的网络表示为图形网络,所以我搜索了已经使用的算法在希望将同样的方法应用于我的问题的网络中,
我正在开发 OpenCL 1.2 处理大型图像的应用程序。 目前,我正在测试的图像是 16507x21244 像素。我的 内核在一个循环中运行,该循环对图像的 block 进行操作.内核将 32bpp
我知道有关断开链接的问题一直被问到,但我的问题似乎有点不同,而且没有一个解决方案有效。 现在,点击我的导航部分中的其他网站链接时,它们都不起作用。它记录它们在那里,如果您右键单击它并选择“在新选项卡中
我正在使用 node.js 构建数据传输代理服务器。它使用 http(s) REST API 将客户端请求通过管道传输到快速对象存储服务器。 It works fine for the individ
我有一个 Azure Servicebus 函数触发器,每当事件放入其指定队列时,该触发器就会调用外部端点。但是,当函数拾取事件并准备发出传出请求时,它会失败并显示以下日志消息 Executed 'A
我是一名优秀的程序员,十分优秀!