Payara-服务器 - 尝试刷新数据时超出写入超时



在部署的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)

当写入一段响应花费太长时间时(可能是由于网络问题(,会发生此异常。这并不意味着问题在于编写整个响应需要太多时间,但在某些情况下,编写一段响应恰好太长,从而导致异常。

您可以尝试延长 TCP 传输写入超时

(在管理控制台中,转到网络→传输→ TCP 并修改写入超时(。 或者通过将值设置为 -1 来禁用它。

当错误

地在端点而不是@GET上使用@POST注释时,我们就会发生这种情况。该端点在大多数开发人员计算机上运行良好,但在一台开发人员的计算机上失败,最后在生产环境中失败。用@GET替换@POST为我们解决了问题。

我只能推测使用POST时导致问题发生的原因。

最新更新