Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.net.SocketTimeoutException:null_Java - Fatal编程技术网

java.net.SocketTimeoutException:null

java.net.SocketTimeoutException:null,java,Java,我正在开发一个web应用程序,它接受来自第三方的json数据,处理这些数据,并用处理后的json数据响应这些数据 我在生产服务器上得到java.net.SocketTimeoutException:null,我无法在本地计算机上复制该值。下面是堆栈跟踪: java.net.SocketTimeoutException: null at org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:191)

我正在开发一个web应用程序,它接受来自第三方的json数据,处理这些数据,并用处理后的json数据响应这些数据

我在生产服务器上得到java.net.SocketTimeoutException:null,我无法在本地计算机上复制该值。下面是堆栈跟踪:

java.net.SocketTimeoutException: null
at org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:191)
at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:246)
at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:227)
at org.apache.coyote.http11.InternalNioInputBuffer.readSocket(InternalNioInputBuffer.java:422)
at org.apache.coyote.http11.InternalNioInputBuffer.fill(InternalNioInputBuffer.java:794)
at org.apache.coyote.http11.InternalNioInputBuffer$SocketInputBuffer.doRead(InternalNioInputBuffer.java:819)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:124)
at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:346)
at org.apache.coyote.Request.doRead(Request.java:422)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:449)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.read1(BufferedReader.java:205)
at java.io.BufferedReader.read(BufferedReader.java:279)
at java.io.Reader.read(Reader.java:140)
引发此异常的代码段(尤其是“while”条件):

该应用程序部署在3个不同的AWS区域,具有相同的服务器配置,令人惊讶的是,其中只有一个区域会引发此异常,并且只有极少数随机请求才会引发此异常


感谢您的帮助。提前谢谢

为了重现套接字超时异常,您必须让客户端开始下载,然后暂停下载一段时间。你可以通过

  • 安装可以模拟不同网络情况(带宽、延迟等)的操作系统工具
  • 编写自己的测试客户机(请参阅)

您是否尝试从有问题的生产服务器手动测试与
curl
的连接?@OrtomalaLokni:是的,我使用curl命令进行了测试。它起作用了。不幸的是,它失败的随机请求很少,不是所有的。我有同样的问题。你找到解决办法了吗?
public static String getPostData(HttpServletRequest request) throws 
IOException {
    StringBuilder stringBuilder = new StringBuilder();
    BufferedReader bufferedReader = null;
    try {
        InputStream inputStream = request.getInputStream();
        if (inputStream != null) {
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            char[] charBuffer = new char[128];
            int bytesRead = -1;
            while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
                stringBuilder.append(charBuffer, 0, bytesRead);
            }
        } else {
            stringBuilder.append("");
        }
    } finally {
        if (bufferedReader != null) {
            bufferedReader.close();
        }
    }
    return stringBuilder.toString();
}