有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jakarta ee在已部署的Java ee应用程序中更新XSLT文件而不重新部署?

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

这实际上是以CruiseControl如何生成报告为模型的。servlet缓存生成的HTML,以避免每次都产生转换成本。表示XSL文件的DOM也缓存在内存中

现在XSLT部署在WAR文件中。我们希望支持WAR文件中部署的默认XSLT,但也支持只更新XSLT而不重新部署整个应用程序的能力。我希望有些人能想出一些解决这类问题的好办法


更新

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

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

共 (1) 个答案

  1. # 1 楼答案

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