您的位置:首页 > 其它

JNLP 客户端不缓存及jar包的版本号问题

2012-04-12 17:14 211 查看
1.JNLP时实时更新问题

根据我的测试及网上看到的文章了解到,客户端java缓存JNLP是根据URL及response反回的Last-Modified(即最后一次修改时间)来缓存的(具体位置在C:\\Documents and Settings\\Administrator\\Local Settings\\Application Data\\Sun\\Java\\Deployment\\cache\\6.0中的某个文件夹下)。我用的是servlet生成JNLP文件的所以可以在servlet中增加如下代码:

resp.setHeader("Pragma", "no-cache");

resp.setHeader("Cache-Control", "no-cache");

resp.setHeader("Expires", "0");

resp.setContentType("application/x-java-jnlp-file");

((HttpServletResponse)resp).setDateHeader("Last-Modified", System.currentTimeMillis()); //这条语句是JNLP更新的核心

你可以做这样一个测试,将缓存的JNLP文件更改一下,你的applet将无法启动。

2.jar包的版本号问题

jar包可以利用Last-Modified进行实时更新,但有时候没有这个必要,因为每次去下载jar包的话会很慢,特别是jar包比较多的时候,更何况我们还可能会利用JNLP离线运行的特点,所以我的jar包是要缓存的,但如何更新呢?这就是jar包的版本问题了。

(1)首选来说说JNLP中的jar包版本号的实现,见代码

<jar href="my.jar" main="true" version=" 1.0.1" size="13813329" download="lazy" />

(2) html中<Applet>标签中的jar包版本号的实现,在<Applet>标签中加入如下代码:

<PARAM NAME="cache_archive" VALUE="my.jar">

<PARAM NAME="cache_version" VALUE="1.0.1">

这样就可以实现jar包版本的管理了。

顺便说一下JNLP的离线远行只需在<information>标签中加入<offline-allowed/>标签即可.

如有不对之此或有更好的方法请指教,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: