【问题标题】:Broken pipe exception when one application tries to connect to another一个应用程序尝试连接到另一个应用程序时出现管道异常
【发布时间】:2014-12-05 12:11:06
【问题描述】:

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

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

我只是想知道如果将机器名称或 IP 替换为 loopbackaddress 是否会有所帮助,因为 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)

感谢您的帮助

谢谢

【问题讨论】:

  • 相关的错误信息是什么?
  • 已在问题中编辑并添加了堆栈跟踪。谢谢
  • 嗯,好的。因此,连接已经建立,但随后被残酷地关闭。不错!
  • 是的,一切都在同一台机器上。我们使用机器名来建立连接。我只是想(可能很傻)如果使用环回地址可以有任何帮助,因为它与硬件无关。
  • 服务器端没有日志吗?如果没有那就奇怪了。如果没有,那么,配置它以添加日志记录。

标签: java sockets network-programming broken-pipe


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多