我有一个基于Java的客户端,它通过JAX-WS从Tomcat 6.0.24服务器webapp接收数据。我最近使用新功能升级了服务器,这些功能可能需要很长时间(超过30秒)才能运行某些输入。
事实证明,对于这些长时间的操作,会发生某种超时。客户端收到HTTP 400 Bad Request错误,不久之后(至少根据我的日志时间戳),服务器报告一个Broken Pipe。
这是客户端的错误消息:
com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 400: Bad Request
服务器:
javax.xml.ws.WebServiceException: javax.xml.stream.XMLStreamException: ClientAbortException: java.net.SocketException: Broken pipe
我已尝试在服务的 BindingProvider 上添加超时设置,但这似乎并没有改变任何内容。默认超时应该是无限的,对吗?
我不知道它是否相关,但值得注意的是客户端是在Karaf OSGI框架中运行的OSGI捆绑包。
最重要的是,我不知道这里发生了什么。请注意,新功能 无需运行太长时间即可运行。另请注意,新功能的响应的大小并不比平时大 - 只需要更长的时间来计算。
答案 0 :(得分:0)
最后,问题是由服务器公共网关上的某种反DoS措施引起的。不幸的是,IT部门拒绝修复它,迫使我转而使用基于轮询的通信。哦,好吧。