我正在开发一个在 JBoss5.1、JEE5、JSF2、Spring3.0、Icefaces2.0、HTML 和 Jquery1.8 上运行的应用程序。
我需要即时生成文件供客户下载。生成文件时,目前我将文件内容作为字节流式传输到 JSF 页面并<ice:outputResource>
用于显示下载链接。这适用于较小的文件。随着文件大小的增加,这不是一个好的解决方案,因为我遇到了OutOfMemoryError
问题,因为应用程序 JVM 必须承担将文件内容放入堆然后通过应用程序汇集的负担。
我想做的是将生成的文件作为直接链接提供,以便它们可以由通过 HTTP 包含的网络提供服务。我有一个在安全环境中执行此操作的限制,以便用户在生成和查看链接之前进行身份验证。所以,我打算在 WEB-INF 目录中生成文件,并在用户下载后立即删除文件,从而有效地使 WEB-INF 仅包含客户当前正在查看的文件。我不确定JBoss 服务器在缓存方面如何处理这些文件以及是否会影响服务器性能。另外,如果有任何替代方法可以解决我的问题,我将不胜感激。
我相信我清楚地描述了我的问题,如果没有,请告诉我。提前感谢您的时间和帮助。
PS - 我什至可以在 WEB-INF 之外创建文件并且仍然保证它们的安全。