JNLP文件自动更新问题

时间:2013-08-26 14:08:52

标签: java windows java-web-start jnlp

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

现在,如果我在服务器上的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 中的更改未得到反映 如果我重新下载jnlp文件然后从中运行,则更新有效。在这种情况下,桌面快捷方式仍然是指旧的痛苦:(

使用JaNeLa验证了jnlp。

编辑:

此demo.jnlp还包括另一个功能jnlp(在blockquotes中添加),其中包含应用程序所需的所有jar文件。因为在每次更新应用程序时,此功能jnlp也会更新,但同样不会反映在客户端上。

1 个答案:

答案 0 :(得分:2)

JWS一直擅长更新Jars,但是..无需更新JNLP文件本身。动态生成的JNLP通常缺少href属性,以指示插件创建桌面快捷方式。

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

  1. PersistenceService
  2. 中缓存最后一个已知JNLP的副本
  3. 在app。启动,连接回服务器并明确读取JNLP。
  4. 将其与缓存版本进行比较。
  5. 如果已更改,请卸载桌面快捷方式&amp;重新启动应用程序。
  6. 如果没有更改,并且不存在桌面快捷方式,会提示安装(新)桌面快捷方式。
  7. 步骤2&amp;如果服务器返回有效的“上次更新”时间,则可以通过简单检查JNLP的URL连接的标头来替换3。