我们在我们的应用服务器的tomcat上运行。关闭输出流后,servlet请求会发生什么?
我们有一个生成PDF文件,并返回到浏览器的servlet。然后删除临时PDF文件。
问题是我们在删除时遇到了一些时间上的困难。我们团队中的某个人决定在删除文件之前等待20秒,因此他们使用Thread.sleep(20000)。
有趣的是,他们关闭输出流,等待20秒,然后再删除文件和退出的doGet()。
我的问题是:由于输出流的响应关闭时,它,是否有任何性能问题在20秒钟等待立即返回给浏览器的等待过吗?例如,它是否捆绑了一个网络连接或一些这样的?
不是tomcat自动删除临时文件吗?你有什么时间困难?一旦pdf由servlet写入并且流关闭,文件可以立即被删除。 – Thihara
为什么您需要首先将PDF存储在磁盘文件系统中?为什么不直接写入'response.getOutputStream()'而不是'FileOutputStream()'?请注意,如果文件保持打开状态,则无法删除该文件。在将PDF写入磁盘之后,您可能忘记了'FileOutputStream#close()'。 – BalusC
那么,服务器上的一个工作线程就被占用了20秒。 你可以使用萤火虫寻找一个连接的网络连接 – Ben