我在部署的JavaEE应用程序中请求不同的Web服务(Jersey 2.23.1)时,从Payara Server 4.1.1.164收到此异常。
我不知道异常的原因,也不知道究竟何时出现,因为在一些具有相同payara服务器配置的测试环境中它出现了,但在其他情况下从未出现过。
有人可以帮我解决这里可能出现的问题吗?任何帮助都将不胜感激。
[2017-03-22T17:20:03.200+0100] [Payara 4.1] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=28 _ThreadName=http-thread-pool::http-listener-1(3)] [timeMillis: 1490199603200] [levelValue: 900] [[
StandardWrapperValve[Alexia-BE]: Servlet.service() for servlet Alexia-BE threw exception
java.io.IOException: Write timeout exceeded when trying to flush the data
at org.glassfish.grizzly.http.io.OutputBuffer.blockAfterWriteIfNeeded(OutputBuffer.java:1004)
at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:715)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:355)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:342)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:161)
at com.sun.jersey.spi.container.servlet.WebComponent$Writer.write(WebComponent.java:307)
at com.sun.jersey.spi.container.ContainerResponse$CommittingOutputStream.write(ContainerResponse.java:135)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)
at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)
at java.io.BufferedWriter.write(BufferedWriter.java:230)
at java.io.Writer.write(Writer.java:157)
at com.sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.java:190)
at com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:128)
at com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:88)
at com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:58)
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
答案 0 :(得分:1)
当编写响应时间过长时,可能会由于网络问题而发生此异常。这并不意味着问题在于编写整个响应需要花费太多,但在某些情况下编写一段响应时间太长,导致异常。
您可以尝试增加TCP传输写入超时(在管理控制台中,转到网络→传输→TCP并修改写入超时)。或通过将值设置为-1来禁用它。
答案 1 :(得分:0)
我们在端点错误地使用@POST
注释而不是@GET
时发生了这种情况。端点在大多数开发人员计算机上运行良好,但在一台开发人员的机器上失败,最后在生产中失败。用@POST
替换@GET
为我们解决了问题。
我只能推测在使用POST时导致问题的原因。