java - 当一个应用程序尝试连接到另一个应用程序时出现管道异常

标签 java sockets network-programming broken-pipe

我们有一个设置,其中一个应用程序(协调器)将任务委托(delegate)给另一个应用程序(工作人员),然后它们完成任务并通过套接字推送结果。

它工作正常,但在一台机器上,我们大多数 worker 都遇到了管道损坏的错误。 一切都在同一台机器上,我们也检查了防火墙设置,它们看起来很好。

我只是想知道用loopbackaddress替换机器名称或IP是否会有帮助,因为loopbackaddress没有任何关联的硬件?

请分享您对此的看法,或者如果您有任何其他建议。

异常跟踪 -

javax.servlet.ServletException: Error building response envelope: ClientAbortException:  java.net.SocketException: Broken pipe
at org.apache.soap.server.http.RPCRouterServlet.doPost(RPCRouterServlet.java:418)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)

感谢您的帮助

谢谢

最佳答案

如果您收到损坏的管道异常,这是因为建立了连接,而另一端突然关闭了连接,而您正在尝试通过 channel 发送数据。在 TCP 级别,对方已经发送了 RST 消息。之后,应用程序尝试通过该套接字/ channel 发送数据。 尝试从日志中获取信息,我认为 servlet 正在通过 RPC 与工作线程通信,并且工作线程以某种方式关闭了连接。

关于java - 当一个应用程序尝试连接到另一个应用程序时出现管道异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315629/

相关文章:

java - H2内存数据库初始化数据

Python:Unix 中的 Socket.error 连接被拒绝 [Errno 111]

java - Netty IdleStateHandler 的问题——我是不是以错误的方式测试它?

java - C++ ifstream.getline() 明显比 Java 的 BufferedReader.readLine() 慢?

java - 在 WebSphere Application Server 8.5 中禁用 JAX-WS 客户端的分块传输编码

java - 基本多 socket 程序

python - 查找通信网络流量频率的算法

java - Android 收不到网络数据?

java - 在 http API 中引发 "bad requests"异常是否是一种好习惯 - 与(Java)最佳实践相矛盾

sockets - 进程终止时是否有必要关闭 gen_tcp 连接?