0

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

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

我只是想知道,如果用 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)

感谢您的帮助

谢谢

4

1 回答 1

1

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

于 2014-12-10T15:25:00.723 回答