gpt4 book ai didi

java - JNLP文件自动更新问题

转载 作者:可可西里 更新时间:2023-11-01 11:55:23 26 4
gpt4 key购买 nike

我有一个基于 jws 的应用程序。
它被部署在网络服务器上,客户端从浏览器下载文件并运行它。
这会创建一个桌面快捷方式,并且应用程序可以完美运行。

现在,如果我更改服务器上 jnlp 文件中的一些属性,然后从桌面快捷方式或从下载的 jnlp 文件本身运行安装的应用程序(在客户端计算机上),它不会' t 得到更新

我已经在 jdk 版本 1_6_30 和 1_7_21 上验证了这一点。这两个版本似乎解决了之前的 bug与缓存路径中的空格有关。
问题仍然存在于 Windows XP/7/8 上。

原始 jnlp 文件:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="path/to/fileLocation" spec="1.0+" href="demo.jnlp" >

<information>
.
.
.
<offline-allowed/>
<shortcut online="false">
<desktop/>
<menu submenu="Demo"/>
</shortcut>
</information>
<update check="always" policy="always"/>
<!--request all permissions from the application. This does not change-->
<security>
<all-permissions/>
</security>
.
.
<resources>
<!-- Here we are referring to the wrapper feature since it transitively refers to all the other plug-ins necessary -->
<extension>
name="Wrapper feature"
href="plugin_<some_random_generated_string_1>.jnlp"/>
</extension>
</resources>
.
.
.
<resources os="Windows" arch="x86">
<j2se version="1.6+" java-vm-args="-Xms400m -Xmx800m"/>
</resources>

更新的 jnlp 文件:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="path/to/fileLocation" spec="1.0+" href="demo.jnlp" >

<information>
.
.
.
<offline-allowed/>
<shortcut online="false">
<desktop/>
<menu submenu="Demo"/>
</shortcut>
</information>
<update check="always" policy="always"/>
<!--request all permissions from the application. This does not change-->
<security>
<all-permissions/>
</security>
.
.
<resources>
<!-- Here we are referring to the wrapper feature since it transitively refers to all the other plug-ins necessary -->
<extension>
name="Wrapper feature"
href="plugin_<some_random_generated_string_2>.jnlp"/>
</extension>
</resources>
.
.
<resources os="Windows" arch="x86">
<j2se version="1.6+" java-vm-args="-Xms300m -Xmx600m"/>
</resources>

java-vm-args 中的更改不会反射(reflect)出来。
如果我重新下载 jnlp 文件然后从中运行,则更新有效。在这种情况下,桌面快捷方式仍然指的是旧的,这很痛苦:(

使用 JaNeLa 验证了 jnlp。

编辑:

这个 demo.jnlp 还包括另一个功能 jnlp(添加在 blockquotes 中),它包括应用程序所需的所有 jar。由于在每次更新应用程序时,此功能 jnlp 也会更新,但不会反射(reflect)在客户端上。

最佳答案

JWS 一直擅长更新 Jars,但在更新 JNLP 文件本身时却不太擅长。动态生成的 JNLP 通常缺少 href 属性来指示插件创建桌面快捷方式。

另一方面,可能会在 IntegrationService of the JNLP API 中找到解决方法.你可能会:

  1. PersistenceService 中缓存最后一个已知 JNLP 的副本。
  2. 在应用程序。启动,连接回服务器并明确读取 JNLP。
  3. 将其与缓存版本进行比较。
  4. 如果发生更改,请卸载桌面快捷方式并重新启动应用。
  5. 如果没有改变,并且不存在桌面快捷方式,提示安装(新的)桌面快捷方式。

如果服务器返回有效的“上次更新”时间,则步骤 2 和 3 可能会被简单检查 JNLP 的 URL 连接的 header 所取代。

关于java - JNLP文件自动更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com