java - Java Web Start 是否可以配置为更新当前服务器版本而不是最新版本?

标签 java java-web-start

总结我到目前为止的研究,似乎 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/

相关文章:

Java:如何将参数传递给 Webstart Applet?

java - 当不存在组合函数时在流上收集/减少

java - A* 搜索算法导致 StackOverFlowError

java - 小程序在开发机器以外的机器上失败

Java 7 list 安全更改

java - 与 JWS java 应用程序的服务器交互的最佳方式是什么

java - 奇怪的 ClassCastException

java - 生成的 JAR 主类抛出 ClassNotFoundException

java - 使用检查您的依赖关系树

java - 使 JNLP Web-Start applet 可调整大小