总结我到目前为止的研究,似乎 Java Web Start 将使用通过 Web 服务器提供的时间戳来确定某个 jar 是否已更新。更新行为可能受到 jnlp 元素“update”的影响,其中元素“check”和“policy”允许定义更新检查的频率以及是否提示用户确认更新。
但是,除了时间戳比较之外,我没有找到任何机会定义其他机制来确定应用程序是否已更新。实际上,我们目前正在讨论如果它不是最新的,是否更有意义(对我们来说),但当前的服务器版本应该下载到客户端。这也可以例如是已在服务器上恢复的旧服务器版本,因为以前 Activity 的较新服务器版本已被回滚。 如果服务器端应用程序回滚,每个用户此时都必须手动清除其 Java 缓存,这当然是可能的,但不是很方便。
如果 Java Web Start 与本地缓存的版本“不同”,是否可以配置/强制始终从服务器下载应用程序版本?
最佳答案
我不知道它是否完全满足您的需求,但看看 webstart 的 Version Download Protocol .
总结一下: 通过版本化下载,您可以指定要在 jnlp 文件中使用的每个 jar 版本,如下所示:
<jar href="jackson-core.jar" version="2.0.2" />
并在服务器上部署 jar 文件,文件名为 jackson-core__V2.0.2.jar
。
使用此协议(protocol),webstart 将仅使用其版本与 jnlp 文件中给定版本完全匹配的 jar 文件。另一个优点是,当指定的版本已存在于本地缓存中时,Webstart 将不会尝试再次下载该版本 - 无论时间戳等如何。
优点:
- 通过 jnlp 文件完全控制使用的版本。
- 缓存中存在的 jar 的下载请求减少
缺点:
- 新版本需要更改 jnlp 文件
- 不适合 SNAPSHOT 构建,因为文件的时间戳被完全忽略,并且版本号对于 SNAPSHOT 构建不会更改。
关于java - Java Web Start 是否可以配置为更新当前服务器版本而不是最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24575403/