HTTP transport error: java.net.SocketException: Connection reset
HTTP transport error: java.net.SocketException: Connection reset
已使用 Jdeveloper 10.1.3.2 构建客户端应用程序,它在 OC4J 服务器上 运行。此应用程序正在向外部服务器应用程序发送数据。它可以正常工作很长时间,没有任何问题。最近发生连接问题并生成以下堆栈跟踪:
com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.SocketException: Connection reset
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:133)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:153)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:93)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
at com.sun.xml.ws.client.Stub.process(Stub.java:319)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:157)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:140)
at $Proxy44.sendRem(Unknown Source)
在浏览之后我发现了一个关于错误 sockets - What's causing my java.net.SocketException: Connection reset? 的很好的讨论。这个 link 中的一个答案说问题主要来自客户端,因为如果它来自服务器端则异常将是 (SocketException reset by peer
).
我做了什么:
我尝试借助这种形式 How to change OC4J HTTP Timeout 来增加 OC4J 的套接字超时。我所做的是将礼节 oracle.j2ee.http.socket.timeout
更改为 5000 而不是 500(长 10 倍)
但是错误依然存在。那么,有什么建议可以解决这个问题吗?
注意:我可以对外部服务器 IP 和端口使用 telnet
命令并且工作正常。
---------------------------------------- -------------- 更新 1 ------------------------------ ----------------------
我在服务器启动时使用以下命令增加客户端应用程序 运行 的服务器时钟偏差:
-Dweblogic.wsee.security.clock.skew=72000000
-Dweblogic.wsee.security.delay.max=72000000
但是运气不好,问题没有解决。
---------------------------------------- -------------- 更新 2 ------------------------------ ----------------------
我意识到问题根本不是来自应用程序;我使用 SoapUI 测试了外部 URL,我得到了同样的错误 Connection rest。我认为这个新的更新clreay表明程序代码没有任何问题。但我现在需要知道去哪里或检查。现在克服这个问题的起点在哪里。任何线索都会有所帮助。
正如您从问题中的更新 2 中看到的那样,问题不是来自客户端应用程序,因为 SoapUI 发生了同样的错误。
问题是 运行 客户端应用程序所在的机器 带宽 低,不足以进行 API 通信。使用简单的速度测试,我发现上传 带宽 与服务器应用程序团队给出的最低要求相比较低。
我通过使用 Resource Monitor in Windows while the client application was running and by using online speed check
监视网络资源得出了这个事实
要解决此问题,必须在客户端应用程序 运行.
处增加机器 带宽
已使用 Jdeveloper 10.1.3.2 构建客户端应用程序,它在 OC4J 服务器上 运行。此应用程序正在向外部服务器应用程序发送数据。它可以正常工作很长时间,没有任何问题。最近发生连接问题并生成以下堆栈跟踪:
com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.SocketException: Connection reset
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:133)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:153)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:93)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
at com.sun.xml.ws.client.Stub.process(Stub.java:319)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:157)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:140)
at $Proxy44.sendRem(Unknown Source)
在浏览之后我发现了一个关于错误 sockets - What's causing my java.net.SocketException: Connection reset? 的很好的讨论。这个 link 中的一个答案说问题主要来自客户端,因为如果它来自服务器端则异常将是 (SocketException reset by peer
).
我做了什么:
我尝试借助这种形式 How to change OC4J HTTP Timeout 来增加 OC4J 的套接字超时。我所做的是将礼节 oracle.j2ee.http.socket.timeout
更改为 5000 而不是 500(长 10 倍)
但是错误依然存在。那么,有什么建议可以解决这个问题吗?
注意:我可以对外部服务器 IP 和端口使用 telnet
命令并且工作正常。
---------------------------------------- -------------- 更新 1 ------------------------------ ----------------------
我在服务器启动时使用以下命令增加客户端应用程序 运行 的服务器时钟偏差:
-Dweblogic.wsee.security.clock.skew=72000000
-Dweblogic.wsee.security.delay.max=72000000
但是运气不好,问题没有解决。
---------------------------------------- -------------- 更新 2 ------------------------------ ----------------------
我意识到问题根本不是来自应用程序;我使用 SoapUI 测试了外部 URL,我得到了同样的错误 Connection rest。我认为这个新的更新clreay表明程序代码没有任何问题。但我现在需要知道去哪里或检查。现在克服这个问题的起点在哪里。任何线索都会有所帮助。
正如您从问题中的更新 2 中看到的那样,问题不是来自客户端应用程序,因为 SoapUI 发生了同样的错误。
问题是 运行 客户端应用程序所在的机器 带宽 低,不足以进行 API 通信。使用简单的速度测试,我发现上传 带宽 与服务器应用程序团队给出的最低要求相比较低。
我通过使用 Resource Monitor in Windows while the client application was running and by using online speed check
监视网络资源得出了这个事实要解决此问题,必须在客户端应用程序 运行.
处增加机器 带宽