我们的应用程序是第三方Web服务(也是轴1)的Web服务客户端(轴1)。我们现在使用它已经有好几年了。
几个星期以来,我们(作为客户端)在调用Web服务时有时会获得HTTP状态400(错误请求)或读取超时。
奇怪的是,服务的access.log显示部分请求或响应而不是URL。它看起来像这样(看起来像请求字符串的结尾)
x.x.x.x -> y.y.y.y:8080 - - [timestamp] "POST /webservice HTTP/1.0" 200 16127 0
x.x.x.x -> y.y.y.y:8080 - - [timestamp] "POST /webservice HTTP/1.0" 200 22511 1
x.x.x.x -> y.y.y.y:8080 - - [timestamp] "il=\"true\"/><nsl:text xsi:type=\"xsd:string\" xsi:nil=\"true\"/></SOAPSomeOperation></soapenv:Body></soapenv:Envelope> Axis/1.4" 400 299 0
或(看似请求的某些字符串)
x.x.x.x -> y.y.y.y:8080 - - [timestamp] ":string\">some text</sometag><othertag>moretext" 400 299 0
或者在某些其他情况下,它看起来像两个请求一起抛出(...表示遗漏了xml字符串):
x.x.x.x -> y.y.y.y:8080 - - [timestamp] "...</someop></soapenv:Body></soapenv:Envelope>:xsd=\"http://www.w3.org/2001/XMLSchema\"...</soapenv:Body></soapenv:Envelope>" 400 299 0
应用程序日志不提供任何提示。此类呼叫的频率是该服务的所有呼叫的1%。到目前为止,我所知道的唯一鉴别因素是它发生,因为操作通知我们服务URL由于“服务器迁移”而改变。
有没有人经历过这样的现象呢?有人知道什么是错的,怎么解决?
谢谢,
答案 0 :(得分:0)
我们没有这种确切的行为,但是我们遇到了Axis 1的一些缺陷,这些缺陷让我们受了很多苦。其中一个错误的类是Axis的HttpSender,它看起来不是线程安全的,并且还有一些bugs。
访问日志错误的不规范可能意味着它实际上与线程安全相关。无论如何,如果你有机会摆脱Axis 1,那么立即行动吧。它差不多5年了,实际上已经死了很多缺陷的产品。