gpt4 book ai didi

tomcat socketTimeout异常

转载 作者:行者123 更新时间:2023-11-28 22:23:39 26 4
gpt4 key购买 nike

我正在使用 iframe 模拟 ajax 文件下载,请求转到 tomcat 应用程序(servlet)进行文件下载,这是一个耗时的过程(可能需要超过 1 分钟),问题是经过一定时间后, tomcat 或浏览器客户端终止连接。请参阅下面的 Tomcat 异常。谁在终止它,客户端还是服务器?有什么方法可以增加超时时间吗?

var iframe = document.createElement("iframe");iframe.src="http://xxxxxxxxx?";
Caused by: ClientAbortException:  java.net.SocketException: Broken pipe        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)        at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:381)        at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:370)        at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)        at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:83)        at org.apache.poi.poifs.storage.BigBlock.doWriteData(BigBlock.java:55)        at org.apache.poi.poifs.storage.DocumentBlock.writeData(DocumentBlock.java:220)        at org.apache.poi.poifs.storage.BigBlock.writeBlocks(BigBlock.java:86)        at org.apache.poi.poifs.filesystem.POIFSDocument$BigBlockStore.writeBlocks(POIFSDocument.java:603)        at org.apache.poi.poifs.filesystem.POIFSDocument.writeBlocks(POIFSDocument.java:275)        at org.apache.poi.poifs.filesystem.POIFSFileSystem.writeFilesystem(POIFSFileSystem.java:390)        at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1168)        at net.sf.jasperreports.engine.export.JRXlsExporter.closeWorkbook(JRXlsExporter.java:199)        ... 17 moreCaused by: java.net.SocketException: Broken pipe        at java.net.SocketOutputStream.socketWrite0(Native Method)        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

最佳答案

您看到的异常是由客户端超时和关闭连接引起的。

对于长时间运行的请求,典型的模式是初始请求命中服务器以触发一些长时间运行的工作。例如,您可以在 MDB 上放置一条消息以创建 pdf。然后 servlet 向客户端发送一个 202 Accepted 响应,其中包含一个设计用于轮询的新 URL。然后客户端需要继续轮询这个新的 URL,直到资源可用。这需要一些 JavaScript,并且一些站点会在客户端轮询资源是否可用时显示进度条。

如果您不向客户提供反馈,他们通常会在一段时间后点击停止按钮并刷新页面。如果您尝试对这些请求中的每一个进行大量操作,这会使事情变得更糟。

关于tomcat socketTimeout异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2105920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com