java - Axis Webservice 调用有时会失败,access.log 显示内容!

标签 java http soap web-services axis

我们的应用程序是第三方 Web 服务(也是 Axis 1)的 Web 服务客户端( Axis 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 由于“服务器迁移”而发生了更改。

有人经历过这样的现象吗?有人知道出了什么问题以及如何解决吗?

谢谢

最佳答案

我们没有这种确切的行为,但我们遇到了 Axis 1 的几个缺陷,这让我们遭受了很多痛苦。有问题的类之一是 Axis 的 HttpSender,它似乎不是线程安全的,并且还有多个 bugs

访问日志错误的不规则性可能意味着它实际上与线程安全性相关。无论如何,如果你有机会摆脱 Axis 1,那就立即去做。它已经有将近 5 年历史了,实际上已经是死产品了,有很多缺陷没有修复。

关于java - Axis Webservice 调用有时会失败,access.log 显示内容!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653932/

相关文章:

java - 从具有对象 "Field"的私有(private)字段获取值。 java

java - 打印使用优先级队列排序的 HashMap 实例

python - 如何修复错误 "AttributeError: ' 模块的对象在 python3 中没有属性 'client'?

node.js - AWS Lambda 阻止所有传出 URL 调用

java - 在 Map of Maps 中打破 java 列表的更好方法是什么?

java - 使用 JDK1.6.0_131 和 SHA-256 算法

ios - Swift - 显示来自外部摄像头的实时视频

node.js - NodeJS - 如何获取 SOAP 网络服务响应的 HTTP header

android - 带 HTTPS 的 KSOAP 2 Android

c# - HTTPS 的 HttpWebRequest 出现 403 禁止错误