我们有一个设置,其中一个应用程序(协调员)将任务委托给另一个应用程序(工作者),他们完成任务并通过套接字推回结果。
它工作正常,但在一台机器上,我们正在为大多数工人破坏管道错误。 一切都在同一台机器上,我们也检查了防火墙设置,它们看起来很好。
我只是想知道如果用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)
赞赏你的帮助
由于
答案 0 :(得分:1)
如果您收到了断管异常,那是因为建立了连接而另一方突然关闭了连接,并且您正尝试通过该通道发送数据。在TCP级别,另一方已经发送了RST消息。之后,应用程序尝试通过该套接字/通道发送数据。 试图阻止日志中的信息,我想servlet正在通过RPC与工作者通信,而工作者以某种方式关闭了连接。