这是我需要做的:使用 Apache's FOP 渲染 PDF在服务器上(最好是 Windows)。作业将来自队列,但这并不是太重要。
我希望避免每次需要渲染作业时都预热 JVM。 FOP 有一个引用 servlet,我可以将其用于 Web 请求,但我不想介绍 Tomcat。
我有非常粗糙的 Java 技能(并且希望保持这种状态),所以,启动一个长时间运行的 Java 程序的最简单方法是什么,该程序可以监视队列并运行 FOP 作业,而无需启动开销比如说,命令行 Java 脚本会发生这种情况吗?我很乐意使用 Rhino 来完成此操作,因为我对 JS 很熟悉,并且已经在 Rhino/JS 中掌握了很多文档处理逻辑。我绝对不想使用 Java Web 服务器。
最佳答案
我认为你只有两个选择;
Java“服务器”,无论是 Web 服务器还是 RPC 服务器。我们使用 thrift 与长期运行的 java 服务进行通信,该服务的唯一目的是生成 PDF。我们在启动时预加载 FOP,并为每个请求保持库“热”。网络服务也同样好。
一个java守护进程,它监听你提到的队列,生成PDF(也许把它放在tmp文件夹中?)并返回完成通知和另一个队列的位置(这实际上是我们的工作方式)生成超过 300 页的长期财务报告)。
您可以使用任何您想要的语言;如果 Rhino 可以直接与 Java/FOP 通信,那么就不会有问题。我们在 Java 之上的各种项目中使用了 Jython 和 Scala。
关于java - Apache FOP 和 Java 热启动选项(使用 Rhino 效果更好),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4607244/