我在aix上运行了一个java1.6网关应用程序。在白天成功传递了数百万条消息,但是当我查看日志时,我会看到下面的堆栈跟踪等日志。 LOG1:
java.net.SocketException: Invalid argument
at java.io.DataOutputStream.write(DataOutputStream.java:119)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:921)
at org.mule.providers.http.HttpServerConnection.writeResponse(HttpServerConnection.java:223)
at com.ibtech.smg.esb.providers.esb.ESBHttpMessageReceiver$NewHttpWorker.run(ESBHttpMessageReceiver.java:162)
at org.mule.impl.work.WorkerContext.run(WorkerContext.java:290)
的log 2:
java.net.SocketException: Invalid argument
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:125)
at java.net.SocketOutputStream.write(SocketOutputStream.java:171)
at java.io.DataOutputStream.write(DataOutputStream.java:119)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:234)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:304)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:308)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:154)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:288)
at java.io.BufferedWriter.flush(BufferedWriter.java:266)
at java.io.FilterWriter.flush(FilterWriter.java:112)
at org.mule.providers.http.ResponseWriter.flush(ResponseWriter.java:75)
我已经搜索过互联网,但没有任何痕迹或案例似乎与我的相符。 我试图在我的开发环境中生成情况(在Windows上。)尝试过大消息,关闭套接字情况,0大小的消息,但没有运气。看不出同样的错误。有没有人知道为什么会出现这种错误?这是应用程序或操作系统错误中的错误?
答案 0 :(得分:0)
当您尝试使用SocketOutputStream.write()
编写大于64K的缓冲区时,会出现问题(java.net.SocketException:Invalid argument)。
当您使用SocketOutputStream.write()
时,请使用SocketOutputStream.flush()
清除SocketOutputStream
。
另一种情况是,连接已被服务器关闭。
(使用命令'netstat'检查连接状态,将是'CLOSE_WAIT')
当您使用SocketOutputStream.write()
时,也请显示“java.net.SocketException:Invalid argument”。