我有一个相当棘手的问题,我已经做了很多研究,但没有找到解决方案的运气。
我有一个由Tomcat servlet组成的Web应用程序。 Tomcat在Windows 2008 R2服务器上运行,并使用IIS中的Apache ISAPI重定向器1.2.37重定向到Tomcat(使用ajp13)。
我的应用程序管理XML文件库。当客户端(浏览器)请求时,servlet使用XSL将XML文件转换为HTML。 HTML将传回IIS,然后返回浏览器进行显示。 Xalan是用于JAXP javax.xml.transform的实现。这种架构已经运作了好几年。
最近,我们从Xalan 2.7.0升级到2.7.1,发现在浏览器中查看时,某些XML文件的HTML被截断了。
经过一些反复试验,我们知道的是:
仅当Xalan 2.7.1与IIS 7一起使用时才会发生截断
Xalan 2.7.1 + IIS 7 =截断
Xalan 2.7.1 + IIS 6 =没有截断
Xalan 2.7.0 + IIS 7 =没有截断
ISAPI重定向程序日志包含以下消息:
[error] isapi_write_client::jk_isapi_plugin.c (1250): WriteClient failed with 534 (0x00000216)
[info] ajp_process_callback::jk_ajp_common.c (1945): Writing to client aborted or client network problems
[info] ajp_service::jk_ajp_common.c (2607): (ajp13w) sending request to tomcat failed (unrecoverable), because of client write error (attempt=1)
[info] service::jk_lb_worker.c (1400): service failed, worker ajp13w is in local error state
[info] service::jk_lb_worker.c (1419): unrecoverable error 200, request failed. Client failed in the middle of request, we can't recover to another instance.
[info] HttpExtensionProc::jk_isapi_plugin.c (2257): service() failed because client aborted connection
鉴于上面的第4和第5项,不清楚谁是罪魁祸首(IIS,重定向器,Xalan或Tomcat ......或者所有这些)。
任何建议都会非常感激。