为什么 Java Web Start 会从 JBoss 重新下载 jar?

2022-09-03 15:59:15

我们刚刚发现,每次重新启动 JBoss 时,我们所有的 Java Web Start 客户端都会重新下载所有 jar,而不是重用缓存的 jar,即使我们的应用程序没有更改也是如此。

根据我在网络上看到的情况,Java Web Start会做一个HTTP HEAD来决定是否下载一个jar。因此,我在应用程序中的所有jar上运行了HTTP HEAD,并发现重新启动JBoss后,所有jar的修改时间都发生了变化!

为什么会这样,我该如何解决?我的应用程序存档中的 jar 根本没有更改。据我所知,JBoss使用启动时间或部署时间作为修改时间。如果我理解正确的话,这将完全缩短Java Web Start使用以前运行中的缓存jar的能力。

我们使用 JBoss 6,如果这是一个问题。以前我们使用 JBoss 4。我想检查一下我们在JBoss 4下是否有问题,但是我们现在对较新的JBoss有太多的依赖性,因此需要一些工作才能使该测试发生。


答案 1

尝试将应用程序部署为分解的 Web 应用程序,而不是 WAR 文件。

这将防止JBoss不得不解压缩应用程序,并可能弄乱修改日期。

您必须以保留修改日期(例如 rsync)的方式处理应用程序的更新,但这可能比降级或修补 JBoss 更容易。


答案 2

它看起来像是在服务器启动时将文件系统挂载到 tmp 目录时不维护文件的 。您可以修补该类中的复制方法,以尝试根据物理文件中的值设置新文件的时间戳。VFSUtilslastModifiedDate

作为对chubbard评论的回应:Tomcat(确切地说是tomcat 7.0.21)不会出现问题。


推荐