When server uses content-length using msg.sendResponseHeaders(200, buf.length), and client makes multiple requests, there are many exceptions. Attaching Server and Client programs to reproduce this.
java.io.IOException: insufficient bytes written to stream
at sun.net.httpserver.FixedLengthOutputStream.close(FixedLengthOutputStream.java:60)
at sun.net.httpserver.PlaceholderOutputStream.close(ExchangeImpl.java:333)
at sun.net.httpserver.ExchangeImpl.close(ExchangeImpl.java:88)
at sun.net.httpserver.HttpExchangeImpl.close(HttpExchangeImpl.java:49)
at DurableServer$1.handle(DurableServer.java:60)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:459)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:669)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:694)
at java.lang.Thread.run(Thread.java:611)
java.io.IOException: Stream is closed
at sun.net.httpserver.Request$ReadStream.available(Request.java:274)
at sun.net.httpserver.Request$ReadStream.block(Request.java:288)
at sun.net.httpserver.Request$ReadStream.read(Request.java:239)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
at sun.net.httpserver.FixedLengthInputStream.readImpl(FixedLengthInputStream.java:40)
at sun.net.httpserver.LeftOverInputStream.read(LeftOverInputStream.java:78)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
****** METHOD not handled ***** OST
Exception in thread "pool-1-thread-10" java.lang.NullPointerException
at sun.net.httpserver.ExchangeImpl.close(ExchangeImpl.java:84)
at sun.net.httpserver.HttpExchangeImpl.close(HttpExchangeImpl.java:49)
at DurableServer$1.handle(DurableServer.java:60)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:459)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:669)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:694)
at java.lang.Thread.run(Thread.java:611)
java.io.IOException: insufficient bytes written to stream
at sun.net.httpserver.FixedLengthOutputStream.close(FixedLengthOutputStream.java:60)
at sun.net.httpserver.PlaceholderOutputStream.close(ExchangeImpl.java:333)
at sun.net.httpserver.ExchangeImpl.close(ExchangeImpl.java:88)
at sun.net.httpserver.HttpExchangeImpl.close(HttpExchangeImpl.java:49)
at DurableServer$1.handle(DurableServer.java:60)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:459)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:669)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:694)
at java.lang.Thread.run(Thread.java:611)
java.io.IOException: Stream is closed
at sun.net.httpserver.Request$ReadStream.available(Request.java:274)
at sun.net.httpserver.Request$ReadStream.block(Request.java:288)
at sun.net.httpserver.Request$ReadStream.read(Request.java:239)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
at sun.net.httpserver.FixedLengthInputStream.readImpl(FixedLengthInputStream.java:40)
at sun.net.httpserver.LeftOverInputStream.read(LeftOverInputStream.java:78)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
****** METHOD not handled ***** OST
Exception in thread "pool-1-thread-10" java.lang.NullPointerException
at sun.net.httpserver.ExchangeImpl.close(ExchangeImpl.java:84)
at sun.net.httpserver.HttpExchangeImpl.close(HttpExchangeImpl.java:49)
at DurableServer$1.handle(DurableServer.java:60)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:65)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:459)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:669)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:694)
at java.lang.Thread.run(Thread.java:611)
- duplicates
-
JDK-6373555 HTTP Server failing to answer client requests
-
- Resolved
-