繁体   English   中英

IOUtils.toString() 异常 java.net.SocketTimeoutException: null

[英]IOUtils.toString() exception java.net.SocketTimeoutException: null

在 web 应用程序上,我使用异步 servlet。

当我使用 IOUtils.toString() 方法时,将 http 输入流转换为字符串。

但是在生产服务器上得到java.net.SocketTimeoutException: null

并且无法在我的本地机器上重现。

下面是堆栈跟踪:

java.net.SocketTimeoutException: null
    at org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:202) ~[tomcat-coyote.jar:8.0.42]
    at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:250) ~[tomcat-coyote.jar:8.0.42]
    at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:231) ~[tomcat-coyote.jar:8.0.42]
    at org.apache.coyote.http11.InternalNioInputBuffer.fill(InternalNioInputBuffer.java:133) ~[tomcat-coyote.jar:8.0.42]
    at org.apache.coyote.http11.InternalNioInputBuffer$SocketInputBuffer.doRead(InternalNioInputBuffer.java:177) ~[tomcat-coyote.jar:8.0.42]
    at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:110) ~[tomcat-coyote.jar:8.0.42]
    at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:362) ~[tomcat-coyote.jar:8.0.42]
    at org.apache.coyote.Request.doRead(Request.java:476) ~[tomcat-coyote.jar:8.0.42]
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:350) ~[catalina.jar:8.0.42]
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:395) ~[tomcat-util.jar:8.0.42]
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:375) ~[catalina.jar:8.0.42]
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:190) ~[catalina.jar:8.0.42]
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[na:1.8.0_65]
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[na:1.8.0_65]
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[na:1.8.0_65]
    at java.io.InputStreamReader.read(InputStreamReader.java:184) ~[na:1.8.0_65]
    at java.io.Reader.read(Reader.java:140) ~[na:1.8.0_65]
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2001) ~[commons-io-2.4.jar:2.4]
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1980) ~[commons-io-2.4.jar:2.4]
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1957) ~[commons-io-2.4.jar:2.4]
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1907) ~[commons-io-2.4.jar:2.4]
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:778) ~[commons-io-2.4.jar:2.4]
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:803) ~[commons-io-2.4.jar:2.4]

套接字超时意味着已达到连接超时或读取超时。 此错误不是由 IOUtils.toString() 引起的。

尝试连接到远程端点时将立即抛出连接超时。 如果套接字在远程端打开但在尝试从套接字读取数据时没有返回数据,您将收到读取超时。

读取和连接超时都可以设置,尽管我建议使用 telnet 来验证端口在应用程序之外的远程端是否打开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM