java - Apache FOP 和 Java 热启动选项(使用 Rhino 效果更好)

标签 java rhino apache-fop

这是我需要做的:使用 Apache's FOP 渲染 PDF在服务器上(最好是 Windows)。作业将来自队列,但这并不是太重要。

我希望避免每次需要渲染作业时都预热 JVM。 FOP 有一个引用 servlet,我可以将其用于 Web 请求,但我不想介绍 Tomcat。

我有非常粗糙的 Java 技能(并且希望保持这种状态),所以,启动一个长时间运行的 Java 程序的最简单方法是什么,该程序可以监视队列并运行 FOP 作业,而无需启动开销比如说,命令行 Java 脚本会发生这种情况吗?我很乐意使用 Rhino 来完成此操作,因为我对 JS 很熟悉,并且已经在 Rhino/JS 中掌握了很多文档处理逻辑。我绝对不想使用 Java Web 服务器。

最佳答案

我认为你只有两个选择;

  1. Java“服务器”,无论是 Web 服务器还是 RPC 服务器。我们使用 thrift 与长期运行的 java 服务进行通信,该服务的唯一目的是生成 PDF。我们在启动时预加载 FOP,并为每个请求保持库“热”。网络服务也同样好。

  2. 一个java守护进程,它监听你提到的队列,生成PDF(也许把它放在tmp文件夹中?)并返回完成通知和另一个队列的位置(这实际上是我们的工作方式)生成超过 300 页的长期财务报告)。

您可以使用任何您想要的语言;如果 Rhino 可以直接与 Java/FOP 通信,那么就不会有问题。我们在 Java 之上的各种项目中使用了 Jython 和 Scala。

关于java - Apache FOP 和 Java 热启动选项(使用 Rhino 效果更好),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4607244/

相关文章:

java - ApacheFOP 未利用足够的系统资源

xslt - 当命名空间是动态时,如何在 XSLT 文件中提及命名空间?

java - Selenium webdriver 2.47.1 如何等待页面重新加载

Java getter 重载

xslt - 使用 XSL-FO、Apache FOP 将元素右对齐

javascript - 犀牛中的jquery

javascript - 我如何编写一个 Java 方法,从服务器端 JavaScript 调用,它将 JS 回调函数作为参数?

java - 从 Android Firebase 中删除值会删除整个节点

java - Minecraft Forge 方法数据类型

javascript - 在 try/catch 中评估 Rhino 中的错误