【发布时间】:2014-03-21 19:54:24
【问题描述】:
所以我正在开展一个学校项目,我们在其中设计了一个 Web 应用程序,该应用程序接收大量用户信息并创建一个 pdf,然后应该将该 pdf 显示给用户,以便他们可以打印或保存它。我们正在使用 Play! Framework 2.1.3 作为我们的框架和服务器,Java 用于服务器端。我使用 Apache 的 PDFbox 库创建 pdf。在开发模式下,每件事都可以正常工作,即使用 play run 命令在 localhost 上启动它。问题是当我们将它放到服务器上并使用 play start 命令启动时,我似乎拍摄了我存放 output.pdf 文件的目录(或至少是 assets/public 文件夹)的快照(我试图将文件移动到其他地方,但这似乎仍然导致 404 错误)。最初,我认为这是我们部署的 liunx 机器造成的缓存问题,并尝试了许多技巧来阻止浏览器缓存 pdf 就像使用 javascript 在文件名上附加时间戳一样,
在游戏中使用这个缓存控制指令!文件,
"assets.cache./public/stylesheets/output.pdf"="max-age=0",
然后我尝试每次只将 pdf 保存为不同的文件名并传回该文件的名称并通过 HTML 中的文件结构直接调用它 这也适用于运行命令,但不适用于启动。
最后我得出的结论是,当发出启动命令时,它会整理文件,因此只有发出启动命令时存在的文件才能看到。
我在这里阅读了文档 http://www.playframework.com/documentation/2.1.x/Production
然后我注意到了这部分
当你运行 start 命令时,Play fork 一个新的 JVM 并运行 默认的 Netty HTTP 服务器。标准输出流被重定向到 Play 控制台,因此您可以监控其状态。
所以看起来它分叉了一个新的 JVM 是造成我痛苦的原因。
所以我的问题是真的可以通过某种方式让网络应用程序创建和显示 pdf 表单吗?(如果我不能让它工作我唯一的解决方案 我可以看到的是,我必须用 HTML 模拟表单并从那里填写)——我真的认为这是一种不好的方法。
这似乎应该有一个解决方案,但我似乎找不到或想出一个请帮助。
我看过这里:
http://www.playframework.com/documentation/2.1.x/JavaStream
答案可能就在那里,但我没有让它工作我对这个游戏很陌生!框架还是
【问题讨论】:
标签: caching pdf playframework