java - 更新已部署的 Java EE 应用程序中的 XSLT 文件而不重新部署?

标签 java jakarta-ee web-deployment

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

这实际上是模仿CruiseControl它会生成报告吗? Servlet 缓存生成的 HTML,以避免每次都产生转换成本。表示 XSL 文件的 DOM 也缓存在内存中。

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

<小时/>

更新

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

  1. 检测到新的 XSLT 后,缓存该 XSLT 本身(直到检测到新版本)
  2. 保留生成的 HTML 的缓存版本,并在出现新的 XSLT 时更新它们。

最佳答案

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

关于java - 更新已部署的 Java EE 应用程序中的 XSLT 文件而不重新部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5452873/

相关文章:

ios - iOS 应用程序的服务器端验证

reactjs - TypeError : braintree. 连接不是函数

java - 带有 BouncyCaSTLeProvider 的 keystore : KeyStore integrity check failed

java - 是否可以在 Android 上使用 GoogleFinanceAPI?

java - JSF2.0 + Eclipse

java - 如何在 jlist 内的 java 中显示文件名的短长度版本

java - Eclipse Juno 更新后无法创建服务器

web-services - 如何知道 GlassFish 中哪个 Web 服务方法抛出了异常?

amazon-web-services - 使用 Amazon Lightsail 的部署选项?

deployment - 使用Grunt和rsync将远程文件夹与本地文件夹同步