观察:
我的网络应用程序在JBoss中运行。
每次用户点击都会因图片等原因生成> 5次HTTP请求。
在服务器上运行netstat显示正在为每个HTTP请求打开一个新的TCP连接(基本上我正在查看端口80上来自客户端IP的TCP连接总数)。
事实:
JBoss HTTP协议设置为1.1。
我已经通过FF,IE9和Chrome查看了 - 所有浏览器也都这样做了。
我有两个测试环境 - 一个在Windows7上运行,另一个在CentOS上运行。我在两者中都看到了相同的行为。
我想要实现的目标
此时,我不确定该问题应该附加哪些代码,配置详细信息或日志,但如果您让我知道,我会提供。任何形式的帮助都表示赞赏。
P.S。这个帖子似乎很有希望来自标题TCP connection is not reused for HTTP requests with HttpURLConnection,但它主要涉及客户端。
答案 0 :(得分:1)
我想我找到了解决方法。感谢指点和建议。他们真的很有帮助。
第1部分: 我在Firefox中使用HttpFox插件来查看响应头。正如Philippe怀疑Connection标头的值为“close”。
第2部分: 在我自己的过滤器中添加一行代码来更改响应头没有帮助。所以我下载了jbossWebService.jar并将其添加到WEB-INF / lib目录中,以便使用org.jboss.web.tomcat.filters.ReplyHeaderFilter类。 (在JBoss 7之前,显然这个包默认包含在JBoss中。)在我的web.xml中添加了以下内容:
<filter>
<filter-name>CommonHeadersFilter</filter-name>
<filter-class>
org.jboss.web.tomcat.filters.ReplyHeaderFilter</filter-class>
<init-param>
<param-name>Connection</param-name>
<param-value>keep-alive</param-value>
</init-param>
</filter>
这就是诀窍(好吧,差不多)。现在,浏览器中的第一个“点击”生成大约4个TCP连接 - 不确定该数字的原因,因为每次单击都会生成&gt; = 7个http请求。但是,如果在ttl期间(15秒)内执行所有后续点击,则不会生成其他TCP连接。我想正如菲利普所建议的那样,更彻底的调查会揭示出一些东西。但此时我必须继续前进。所以,暂时我会将这个问题标记为已回答。如果将来需要,我会重新打开它。