java.io.IOException: 断开的管道

时间:2022-10-30 08:33:36
java.io.IOException: 断开的管道
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
at com.shbai.util.Tools.sendData(Tools.java:279)
at com.shbai.util.DataPacketSendOut.sendDeviceLightData(DataPacketSendOut.java:48)
at com.shbai.thread.LedDeviceLight.run(LedDeviceLight.java:60)

这个问题该怎么解决?原因我知道。

12 个解决方案

#1



。。。。。。。。。。。。。。。



java.io.IOException: 断开的管道


你知道什么原因,那你不去解决,那你至少说出来啊!

#2


引用 1 楼 xiesq5112 的回复:
。。。。。。。。。。。。。。。



java.io.IOException: 断开的管道


你知道什么原因,那你不去解决,那你至少说出来啊!
原因嘛,应该就是客户端断开了,然后我这里还往那里发数据,于是就报错了,但是我又觉得不对,在本地,如果客户端断开了不管是异常断开还是主动断开,服务端都是报出“远程主机断开了一个现有的连接”,而不是这什么”断开的管道“,原因大概应该就是这样,但是怎么解决一点头绪都没有,烦死了

#3


添加try、catch,不抛出这样的异常

#4


引用 1 楼 xiesq5112 的回复:
。。。。。。。。。。。。。。。



java.io.IOException: 断开的管道


你知道什么原因,那你不去解决,那你至少说出来啊!
我现在知道它事实上并没有断开连接,但是为什么会数据发送失败,和这个断开的管道到底是什么?

#5


引用 4 楼 zyb112211 的回复:
Quote: 引用 1 楼 xiesq5112 的回复:


。。。。。。。。。。。。。。。



java.io.IOException: 断开的管道


你知道什么原因,那你不去解决,那你至少说出来啊!
我现在知道它事实上并没有断开连接,但是为什么会数据发送失败,和这个断开的管道到底是什么?

怎么判断的没有断开连接?

#6


找到解决方法了么?楼主?

#7


我也遇到了这个问题,请问楼主怎么解决的?

#8


我也遇到这个情况,怎么模拟这个异常进而try---catch ,但就是模拟不出来,求大神指点迷津

#9


运行环境是什么?
操作系统,jdk版本,容器都是什么

#10


我也遇到了这样的问题,该怎么解决呢?

#11


这个是报错信息java.io.IOException: java.io.IOException: 断开的管道
at com.sun.xml.internal.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:284)
at com.sun.xml.internal.ws.transport.http.HttpAdapter.publishWSDL(HttpAdapter.java:661)
at com.sun.xml.internal.ws.transport.http.HttpAdapter.handleGet(HttpAdapter.java:261)
at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:235)
at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95)
at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:677)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:649)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.xml.stream.XMLStreamException: java.io.IOException: 断开的管道
at com.sun.xml.internal.stream.writers.XMLStreamWriterImpl.close(XMLStreamWriterImpl.java:378)
at com.sun.xml.internal.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:282)
... 14 more

#12


一、Broken pipe产生原因分析

1.当访问某个服务突然服务器挂了,就会产生Broken pipe;

2.客户端读取超时关闭了连接,这时服务器往客户端再写数据就发生了broken pipe异常!

二、方案

1.问题一分析服务器为什么挂了。

2.问题二使用jps/jstack分析线程栈,看是不是有线程阻塞。

#1



。。。。。。。。。。。。。。。



java.io.IOException: 断开的管道


你知道什么原因,那你不去解决,那你至少说出来啊!

#2


引用 1 楼 xiesq5112 的回复:
。。。。。。。。。。。。。。。



java.io.IOException: 断开的管道


你知道什么原因,那你不去解决,那你至少说出来啊!
原因嘛,应该就是客户端断开了,然后我这里还往那里发数据,于是就报错了,但是我又觉得不对,在本地,如果客户端断开了不管是异常断开还是主动断开,服务端都是报出“远程主机断开了一个现有的连接”,而不是这什么”断开的管道“,原因大概应该就是这样,但是怎么解决一点头绪都没有,烦死了

#3


添加try、catch,不抛出这样的异常

#4


引用 1 楼 xiesq5112 的回复:
。。。。。。。。。。。。。。。



java.io.IOException: 断开的管道


你知道什么原因,那你不去解决,那你至少说出来啊!
我现在知道它事实上并没有断开连接,但是为什么会数据发送失败,和这个断开的管道到底是什么?

#5


引用 4 楼 zyb112211 的回复:
Quote: 引用 1 楼 xiesq5112 的回复:


。。。。。。。。。。。。。。。



java.io.IOException: 断开的管道


你知道什么原因,那你不去解决,那你至少说出来啊!
我现在知道它事实上并没有断开连接,但是为什么会数据发送失败,和这个断开的管道到底是什么?

怎么判断的没有断开连接?

#6


找到解决方法了么?楼主?

#7


我也遇到了这个问题,请问楼主怎么解决的?

#8


我也遇到这个情况,怎么模拟这个异常进而try---catch ,但就是模拟不出来,求大神指点迷津

#9


运行环境是什么?
操作系统,jdk版本,容器都是什么

#10


我也遇到了这样的问题,该怎么解决呢?

#11


这个是报错信息java.io.IOException: java.io.IOException: 断开的管道
at com.sun.xml.internal.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:284)
at com.sun.xml.internal.ws.transport.http.HttpAdapter.publishWSDL(HttpAdapter.java:661)
at com.sun.xml.internal.ws.transport.http.HttpAdapter.handleGet(HttpAdapter.java:261)
at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:235)
at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95)
at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:677)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:649)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.xml.stream.XMLStreamException: java.io.IOException: 断开的管道
at com.sun.xml.internal.stream.writers.XMLStreamWriterImpl.close(XMLStreamWriterImpl.java:378)
at com.sun.xml.internal.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:282)
... 14 more

#12


一、Broken pipe产生原因分析

1.当访问某个服务突然服务器挂了,就会产生Broken pipe;

2.客户端读取超时关闭了连接,这时服务器往客户端再写数据就发生了broken pipe异常!

二、方案

1.问题一分析服务器为什么挂了。

2.问题二使用jps/jstack分析线程栈,看是不是有线程阻塞。