Apache CXF 无法发送消息,原因是:java.net.SocketException:连接重置
Apache CXF Could not send message caused by: java.net.SocketException: Connection reset
我是 运行 tomcat 服务器,正在尝试使用 .NET SOAP WS。
apache.cxf.
.NET WS 在其一侧有集群,当其中一台机器上执行重启时,我得到
javax.xml.ws.WebServiceException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:148)
...
Caused by: java.net.SocketException: Connection reset
为了避免这种情况,我想使用 connection=close header 仅用于此 WS 消耗。
因此,在创建 SOAP 消息时,我发送
HTTPConduit conduit = (HTTPConduit) iMyFlowWSClient.getConduit();
conduit.getClient().setConnection(ConnectionType.CLOSE);
而且我在 wireshark 上看到 header 得到了正确的值:
Connection: close\r\n
但是,当 java.xml.ws.Service 的构造函数初始化 wsdl url 时执行第一次调用 WS(看起来像 xsd 的导入):
protected Service(java.net.URL wsdlDocumentLocation, QName serviceName) {
delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation,
serviceName,
this.getClass());
}
我在 Wireshark 上看到下一个 headers:
Hypertext Transfer Protocol
GET /MyFlow.svc?wsdl HTTP/1.1\r\n
Content-Type: text/xml\r\n
Accept: */*\r\n
User-Agent: Apache CXF 3.0.0\r\n
Cache-Control: no-cache\r\n
Pragma: no-cache\r\n
Host: 123.123.12.34\r\n
Connection: keep-alive\r\n
\r\n
[Full request URI: http://123.123.12.34/MyFlow.svc?wsdl]
而且我相信是什么让这种与 WS 的联系保持活力。
是否有任何解决方案来配置 apache.cxf headers 发送 connection=close on all 在 HTTP 级别执行的请求?
不,在我看来,您只能减少问题,而不能消除问题。问题似乎出在.NET 方面;关闭连接不知何故不正确。
我是 运行 tomcat 服务器,正在尝试使用 .NET SOAP WS。 apache.cxf.
.NET WS 在其一侧有集群,当其中一台机器上执行重启时,我得到
javax.xml.ws.WebServiceException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:148)
...
Caused by: java.net.SocketException: Connection reset
为了避免这种情况,我想使用 connection=close header 仅用于此 WS 消耗。
因此,在创建 SOAP 消息时,我发送
HTTPConduit conduit = (HTTPConduit) iMyFlowWSClient.getConduit();
conduit.getClient().setConnection(ConnectionType.CLOSE);
而且我在 wireshark 上看到 header 得到了正确的值:
Connection: close\r\n
但是,当 java.xml.ws.Service 的构造函数初始化 wsdl url 时执行第一次调用 WS(看起来像 xsd 的导入):
protected Service(java.net.URL wsdlDocumentLocation, QName serviceName) {
delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation,
serviceName,
this.getClass());
}
我在 Wireshark 上看到下一个 headers:
Hypertext Transfer Protocol
GET /MyFlow.svc?wsdl HTTP/1.1\r\n
Content-Type: text/xml\r\n
Accept: */*\r\n
User-Agent: Apache CXF 3.0.0\r\n
Cache-Control: no-cache\r\n
Pragma: no-cache\r\n
Host: 123.123.12.34\r\n
Connection: keep-alive\r\n
\r\n
[Full request URI: http://123.123.12.34/MyFlow.svc?wsdl]
而且我相信是什么让这种与 WS 的联系保持活力。
是否有任何解决方案来配置 apache.cxf headers 发送 connection=close on all 在 HTTP 级别执行的请求?
不,在我看来,您只能减少问题,而不能消除问题。问题似乎出在.NET 方面;关闭连接不知何故不正确。