1

我有一个 Java EE 应用程序,它采用 XML 并将 XSLT 应用于它以生成 HTML。此过程发生在自定义 servlet 中。这通常用于在某些网页上构建部分内容。由于实际数据已经存储为 XML,因此只在 servlet 中进行转换是有意义的。

这实际上是根据CruiseControl构建报告的方式建模的。servlet 缓存生成的 HTML 以避免每次都产生转换成本。表示 XSL 文件的 DOM 也缓存在内存中。

现在 XSLT 部署在 WAR 文件中。我们希望支持在 WAR 文件中部署的默认 XSLT,但也希望能够仅更新 XSLT 而无需重新部署整个应用程序。我希望有些人可能对解决这类问题有一些好主意。


更新

从我收到的评论中,我意识到有一些特定于服务器的方法可以做到这一点。但我希望以更通用的方式解决它。我需要确保我能够保留以下功能...

  1. 一旦检测到新的 XSLT,缓存 XSLT 本身(直到检测到新版本)
  2. 保留生成的 HTML 的缓存版本,当有新的 XSLT 时更新它们。
4

1 回答 1

2

我不会将 XSLT 放在 war 文件中,而是选择在我的 war 之外有一个可配置的 xslt 文件夹;“可配置”是指有一个配置文件(属性或其他格式)告诉 webapp xslt 文件夹的路径。然后,您可以定期监视该文件夹的内容,如果有任何 XSLT 更改,则使相应的缓存无效,重新加载 XSLT,并开始使用新的缓存。您还必须注意操作的原子性:使缓存无效和重新加载 XSLT 可能会中断对该 XSLT 生成的内容的持续服务请求。

于 2011-03-28T08:19:11.400 回答