gpt4 book ai didi

java - 由于 SOAP 信封/ header 混淆,Tomcat 中的任意 HTTP 501 未实现错误

转载 作者:行者123 更新时间:2023-11-28 23:34:39 25 4
gpt4 key购买 nike

我们在为测试目的而设置的机器 (Ubuntu 12.04.4 LTS) 上遇到奇怪的“501 未实现”错误。服务器 Web 应用程序在 Tomcat 7.0.55(也使用其他 7.x 版本进行测试)和 Java 7 中运行。 Java 8 (20)(测试了多个版本)。我们在服务器端使用 Jax WS 2.2.8。请求可以有非常不同的大小、复杂性等。

所有 SOAP 请求中大约有 1%(数千个)以以下错误结束:

com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 501: Not Implemented
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:323)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:272)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:230)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:143)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:110)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.client.Stub.process(Stub.java:464)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:174)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:91)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:154)
at com.sun.proxy.$Proxy89.addToIndex(Unknown Source)
at com.jv.pm.server.ReIndexService$IndexThread.run(ReIndexService.java:85)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

在服务器端,Tomcat 记录以下内容:

127.0.0.1 - - [17/Jul/2014:22:10:41 +0200] "/S:Envelope>POST /application/methodname HTTP/1.1" 501 1148
127.0.0.1 - - [18/Jul/2014:09:41:59 +0200] "></S:Envelope>POST /application/methodname HTTP/1.1" 501 1164
127.0.0.1 - - [18/Jul/2014:09:48:55 +0200] "dy></S:Envelope>POST /application/methodname HTTP/1.1" 501 1168
127.0.0.1 - - [11/Aug/2014:14:16:41 +0200] "velope>POST /application/methodname HTTP/1.1" 501 1138
127.0.0.1 - - [11/Aug/2014:16:24:26 +0200] "velope>POST /application/methodname HTTP/1.1" 501 1138
127.0.0.1 - - [11/Aug/2014:16:25:00 +0200] "velope>POST /application/methodname HTTP/1.1" 501 1138
127.0.0.1 - - [11/Aug/2014:16:25:37 +0200] "velope>POST /application/methodname HTTP/1.1" 501 1138
127.0.0.1 - - [11/Aug/2014:16:25:53 +0200] "velope>POST /application/methodname HTTP/1.1" 501 1138
127.0.0.1 - - [11/Aug/2014:16:28:43 +0200] ":Envelope>POST /application/methodname HTTP/1.1" 501 1144
127.0.0.1 - - [12/Aug/2014:19:35:02 +0200] "S:Envelope>POST /application/methodname HTTP/1.1" 501 1146
127.0.0.1 - - [12/Aug/2014:19:35:20 +0200] "></S:Envelope>POST /application/methodname HTTP/1.1" 501 1164
127.0.0.1 - - [12/Aug/2014:19:35:45 +0200] "dy></S:Envelope>POST /application/methodname HTTP/1.1" 501 1168
127.0.0.1 - - [21/Aug/2014:16:51:16 +0200] "Envelope>POST /application/methodname HTTP/1.1" 501 1142
127.0.0.1 - - [21/Aug/2014:16:51:40 +0200] "/S:Envelope>POST /application/methodname HTTP/1.1" 501 1148
127.0.0.1 - - [26/Aug/2014:17:35:29 +0200] "lope>POST /application/methodname HTTP/1.1" 501 1134
127.0.0.1 - - [03/Sep/2014:13:46:11 +0200] "pe>POST /application/methodname HTTP/1.1" 501 1130
127.0.0.1 - - [03/Sep/2014:13:46:12 +0200] "pe>POST /application/methodname HTTP/1.1" 501 1130
127.0.0.1 - - [03/Sep/2014:13:46:26 +0200] "ody></S:Envelope>POST /application/methodname HTTP/1.1" 501 1170
127.0.0.1 - - [04/Sep/2014:13:56:49 +0200] "nvelope>POST /application/methodname HTTP/1.1" 501 1140
127.0.0.1 - - [04/Sep/2014:13:57:03 +0200] "pe>POST /application/methodname HTTP/1.1" 501 1130
127.0.0.1 - - [04/Sep/2014:13:57:28 +0200] "/S:Envelope>POST /application/methodname HTTP/1.1" 501 1148

如您所见,HTTP 消息的正文似乎与 header (?) 混在一起了。更奇怪的是:它发生在任意连接和数据上,所以一个相同的请求(携带完全相同的数据)可能以 HTTP 501 响应结束,而一秒钟后以 HTTP 200 响应结束。所以对我们来说,它感觉是不确定的,只有当我们向服务器发送数百个或更多请求时,我们才能可靠地重现它——将有可靠的(大约)1% 的 501 错误。

我们也面临着一个完全不同的网络应用程序的问题,该应用程序主要处理二进制输入数据。所以问题似乎完全独立于正在运行的应用程序或 SOAP 请求的结构。

注意请求是通过本地环回接口(interface)运行的(因此发送 SOAP 请求的客户端在同一台机器上运行)可能很重要。在客户端,也测试了不同的 Java 版本(7 和 8)。 stub 创建发生在“wsimport”(在 Java 7 中)。

我们不知何故束手无策,如果有人能引导我们朝着正确的方向追踪这个错误,我们将不胜感激。

谢谢和最好的问候

最佳答案

我们可以通过更新到 Apache Tomcat 版本 8.0.15 来解决这个问题。

关于java - 由于 SOAP 信封/ header 混淆,Tomcat 中的任意 HTTP 501 未实现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25668466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com