Tomcat上的Tapestry Web App偶尔会吐出垃圾

Jes*_*run 6 java tomcat gzip tapestry

我们在Tomcat 6上运行了Tapestry-Spring-Hibernate webapp,每秒处理几千个请求.随机地,没有明显的原因,页面只是在浏览器上显示一堆随机字符.但是,刷新页面时,它显示正常.以下是Chrome上乱码页面来源的屏幕截图:

Chrome上的tomcat页面

这是我到目前为止所发现的:

  1. 它似乎不是特定于浏览器的.我在Chrome和Firefox上见过这个,但是用户也在IE 7上报告了这个问题.
  2. 服务器上的负载似乎与何时发生无关.
  3. 刷新页面会正常显示页面,就好像什么都没发生过一样.
  4. 我没有在服务器或应用程序日志中看到任何相关内容
  5. 页面的内容类型标记是 <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
  6. 在同一个容器上部署了一些其他Web应用程序,其中一个是Alfresco,但它们似乎根本没有展示.

我的问题是,有人之前遇到过这种情况,如果有的话,他们能指出我应该开始寻找的地方吗?这是一个问题,页面有不正确的内容类型或服务器由于某种原因无法处理它?或者这可能是Tapestry或应用程序本身的框架错误?任何指针都是受欢迎的.此时,我不确定问题出在哪里,所以我不确定这是在ServerFault上还是留在这里.

Jes*_*run 0

这似乎与 Tapestry 框架中的 gzip 压缩问题有关(如 @barnyr 所建议),并且可能是 Tapestry 5.3 中的回归错误。引用邮件列表主题中的 Howard 的话:

我相信这是一个错误,在某些情况下,页面内容的损坏的 GZIP 流将流式传输到客户端;这肯定是在 5.2.6 中修复的,但我认为它也在 5.2.5 中修复了。

contributeApplicationDefaults快速修复方法是在应用程序模块类的方法中添加以下配置符号:

configuration.add(SymbolConstants.GZIP_COMPRESSION_ENABLED, "false");
Run Code Online (Sandbox Code Playgroud)

这当然会禁用 gzip 压缩,但可能是值得做出的权衡。

可能相关的问题: