我们正在将生产环境转移到客户的数据中心。目前,为了解释这个场景,我们有一个Apache负载均衡器,它负责平衡对托管2个grails应用程序的2个Apache Tomcat应用程序服务器的请求。我很感激任何帮助!
总结一下,我们的设置是: - 充当负载均衡器的Apache HTTP服务器
2个Tomcat服务器(节点A和节点B)
我们在每个Tomcat服务器上托管了两个Java / Grails应用程序。 在我们当前的环境中,我们通过负载均衡器将来自我们的grails应用程序的hessian请求发送到另一个grails应用程序。这非常有效。在我们迁移到的环境中,这是失败的。
我们已经能够验证所有防火墙和安全包都已关闭。每次此粗麻布调用失败时,我们也能够验证负载均衡器访问日志中是否存在错误(/ var / log / httpd / access_log):
10.30.95.51 - - [19 / Jun / 2014:11:55:13 -0400]“POST / Application / hessian / RemoteTicketService HTTP / 1.1”500 8067“ - ” 的 “Java / 1.6.0_30”
我继续执行tcpdump并且我能够确定为Hessian返回了Grails应用程序错误 - 有没有人有任何想法?:
L6DàL6< 83>¢HTTP / 1.1 500内部服务器错误^ M日期:2014年6月20日,星期五 14:40:08 GMT ^ M服务器:Apache / 2.2.15(红帽)^ M连接:关闭^ M Transfer-Encoding:chunked ^ M Content-Type:text / html; charset = UTF-8 ^ M. ^ M 1f83 ^ M. Grails运行时异常 。信息 { 边框:1px纯黑色; 填充:10px; 背景色:#E9E9E9; 保证金:30px; } .header { 保证金:30px; } .stack { 边框:1px纯黑色; 填充:5px; 溢出:汽车; 身高:300px; } .snippet { 填充:5px; 背景颜色:白色; 边框:1px纯黑色; 保证金:3px的; FONT-FAMILY:宋体; }
看起来你遇到了一个错误,抱歉 消息: -1的粗麻布输入中预期的'H'/'C'(Hessian 2.0)或'c'(Hessian 1.0) 造成:Hessian骨架调用失败;嵌套异常是java.io.IOException:预期 'H'/'C'(Hessian 2.0)或'c'(Hessian 1.0)在-1的粗麻布输入中 等级:未知
在线: [-1]
代码段:
答案 0 :(得分:1)
这对Apache / 2.2.15上的mod_jk模块1.2.39来说是一个问题。我们将mod_jk模块换成版本1.2.37,一切正常。使用tcpdump和一个基本的hessian java项目,我们能够通过设置" chunked post"来确认问题已得到解决。在我们的粗麻布工厂做错了。遗憾的是,我们无法在项目库/依赖项中执行此代码更改,但我们发现在mod_jk 1.2.39中已破坏了分块HTTP请求的转发。 mod_jk 1.2.40修复了这个错误,它也没有在1.2.37中影响我们的环境。
http://tomcat.apache.org/connectors-doc/miscellaneous/changelog.html