Java 如何调试Tomcat压缩问题?
我在两台不同的CentOS机器上有两台tomcat服务器,运行相同的应用程序(我的开发环境和测试环境)。其中一个在其Java 如何调试Tomcat压缩问题?,java,tomcat7,Java,Tomcat7,我在两台不同的CentOS机器上有两台tomcat服务器,运行相同的应用程序(我的开发环境和测试环境)。其中一个在其server.xml中启用了压缩,而另一个则没有,因此我向tomcat添加了相同的配置,该配置没有启用压缩 两台机器上的server.xml的相关部分如下所示: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" compression="on"
server.xml
中启用了压缩,而另一个则没有,因此我向tomcat添加了相同的配置,该配置没有启用压缩
两台机器上的server.xml
的相关部分如下所示:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,application/json,text/plain"
redirectPort="8443" />
我提出了几点意见:
- 两台服务器都有完全相同的配置(至少我非常确定),第一个应用程序工作得非常完美
- 如果我在Unix机器上使用curl命令调用第二个应用程序,我会毫无问题地得到响应。(但它不适用于Windows邮箱中的邮递员)
- 来自第二个应用程序的响应没有标题
内容编码
- 日志没有显示任何工作(所有请求都记录为已处理,状态为200,但邮递员显示502错误)
- 工作应用程序运行在tomcat
上,而不运行在tomcat7.0.64
上,但我没有发现这些版本之间有任何关联7.0.76
我可以检查什么来找出错误的来源?问题来自我使用的JDK版本(
1.8.0.161
),其中包含报告的错误,至少我认为是同一个错误
服务器没有安装相同的版本,因此我通过将服务器1的工作JDK安装到服务器2来解决问题。使用postman,您应该能够准确地看到服务器返回给您的内容,包括所有标题等。您是否检查了更改过的tomcat的启动日志以获得任何输出?@Jan是的,我的启动日志没有显示出任何错误。Postman显示了响应的标题(这就是为什么我可以说我没有得到
内容编码
标题),但它看起来无法读取响应正文(如果它不能解压缩它,这就有意义)您确实向两台服务器发送了accept Encoding标题,对吗?你检查compression=“force”是否改变了什么吗?@Jan我向两台服务器发送Accept
标题。我刚刚尝试添加了Accept Encoding
,结果是一样的(工作服务器仍然工作正常,另一个仍然不工作)。事实上,我已经检查了compression=“force”
是否改变了某些东西,但它没有改变posman应用程序/gzip的问题:
Content-Encoding Error (content_encoding_error)
Server response could not be decoded using encoding type returned by server.
This is typically caused by a Web Site presenting a content encoding
header of one type, and then encoding the data differently.