ZEUS ZXTM打破HTTP请求到Java Servlet HTTP 404?

我有一个名为“ARI”的Java Servlet,它从归档数据库中检索数据,并从该数据库返回一个XML有效载荷。

我们在虚拟服务器上运行这个servlet的多个实例,并且可以通过不同的端口号访问,如下所示:

testserver.co.uk:61061/aricp/ari

testserver.co.uk:61062/aricp/ari

这两个servlet都可以直接从客户端直接访问,这里是客户端和服务器之间通过数据包捕获进行的示例对话。

成功的HTTP请求:

POST / aricp / ari HTTP / 1.1 Accept-Charset:UTF-8

内容types:application / x-www-form-urlencoded; charset = UTF-8

用户代理:Java / 1.6.0_25

主持人:testserver.co.uk:61061

接受:text / html,image / gif,image / jpeg,*; q = .2, / ; Q = 0.2

连接:保持活力

内容长度:11

ID = 1-134ISR

请注意请求中的POSTvariables“id”

成功的回应

HTTP / 1.1 200 OK

服务器:Sun-ONE-Web-Server / 6.1

date:2013年1月8日星期二17:48:49 GMT

内容types:text / html

传输编码:分块

03a6


*成功的HTTP请求服务器日志*

[09 / Jan / 2013:10:25:33]罚款(16359):对于主机10.232.191.87尝试GET / aricp / ari,ntrans-j2ee报告:将上下文“/ aricp”中的uri“/ ari” “ARI”

所以可以直接发送请求到我们的servlet,但是如果我们使用ZEUS ZXTM来间接处理来自客户端的请求到我们的servlet的所有实例,它就不起作用。

这里是一个失败的HTTP请求,请注意主机地址的区别,因为ZEUS是中介。

ZEUS失败的HTTP请求

POST / aricp / ari HTTP / 1.1 Accept-Charset:UTF-8

内容types:application / x-www-form-urlencoded; charset = UTF-8

用户代理:Java / 1.6.0_25

主持人:zeus.co.uk:61061

接受:text / html,image / gif,image / jpeg,*; q = .2, / ; Q = 0.2

连接:保持活力

内容长度:11

ID = 1-PUZK7D

ZEUS失败的HTTP响应

HTTP / 1.1 404未find

服务器:Sun-ONE-Web-Server / 6.1

date:2013年1月8日星期二18:05:45 GMT

内容长度:292

内容types:text / html

当使用ZEUS时,We​​b服务器无法将来自ZEUS的请求解释为servlet请求,而是似乎将请求URI解释为字面上的文件path,并且找不到404。

ZEUS失败的HTTP请求服务器日志

[09 / Jan / 2013:10:50:45] warning(16886):for host 10.232.184.53 GET / aricp / ari,send-file reports:HTTP4142:找不到/ u02 / SunONE61060 / docs / aricp / ari(找不到文件)

正如你所看到的,它将uri视为目录path而不是应用程序path。

这是一个很奇怪的问题。


我已经尝试过的东西

  • 删除访问控制列表以确保访问不受限制
  • 刷新servlet和虚拟服务器
  • 令人耳目一新的ZEUS
  • 重新启动Sun One Web服务器
  • 在虚拟服务器上重新安装servlet

所以总的来说,它是这样工作的很好:

客户端 – >服务器

但是,这样做是不行的:

客户端–ZEUS – >服务器

我正要去刷新一个新的虚拟服务器的安装,看看会发生什么。

任何想法或理论的欢迎。

我不确定为什么你只有一个后端服务器,也许它只是一个testing设置。
ZXTM是一个function强大的负载平衡器,目前看来你或多或less地把它用作反向代理。

无论如何,你通常这样设置的方式是:
– 创build一个像myapp.example.com一样的DNSlogging,并将其指向ZXTM群集的stream量IP
– 设置您的后端应用程序来听myapp.example.com
– 在使用stream量IP的ZXTM集群中创build虚拟服务器
– 在ZXTM集群中创build一个新池,并添加testserver.co.uk:61061
– 将新池分配给创build的虚拟服务器

然后您可以通过myapp.example.com访问您的应用程序。
您仍然可以直接在后端节点上访问应用程序(例如,用于监视目的),但根据应用程序的工作方式,您可能需要为此调整主机头。