首页 文章

Java Web Start使用不同的缓存目录

提问于
浏览
0

我有一个Java Web Start应用程序 . 我的JNLP指示Java在有更新时提示,并创建桌面快捷方式 .

在UAT网站上,它按预期工作 . 快捷方式的目标将是这样的:

C:\Windows\SysWOW64\javaws.exe -localfile -J-Djnlp.application.href=[https]://[Domain]/[Path to my JNLP].jnlp "C:\Users[User name]\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\21\5819ce55-139863fe"

在Java控制面板中,我可以在缓存的“应用程序”列表中看到我的应用程序 . 在Resources列表中,我可以看到JNLP和JAR文件的条目 .

但是在预 生产环境 站点(使用相同的客户端计算机)上,Java将使用不同的缓存文件夹:

C:\Windows\SysWOW64\javaws.exe -localfile -J-Djnlp.application.href=[https]://[Domain]/[Path to my JNLP].jnlp "C:\Users[User name]\AppData\Local\Temp\tmp_cache2515468182853051613.tmp"

在Java控制面板中,“预 生产环境 ”应用程序未列在“应用程序”列表中 . 在Resources列表中,我只能找到JAR文件而不能找到JNLP文件 .

这是因为缓存中缺少JNLP,每当我通过快捷方式启动预 生产环境 版本时,Java将提示更新可用并将重新下载JAR文件 .

我尝试打开部署日志,但我不知道应该寻找什么 . 我找到了这样的条目:

Wrote URL [https]://[Domain]/[Path to JNLP].jnlp to File C:\Users[User name]\AppData\Local\Temp\tmp_cache3515307480207784226.tmp

但我不知道为什么使用Local \ Temp而不是DeploymentCache . UAT和Pre-Production网站的JNLP文件几乎相同,唯一的区别是 title 元素和属性文件中的内容发生了变化 .

我能想到的另一个不同之处是服务器证书--JNLP和JAR文件托管在Apache服务器上 . Java将显示预 生产环境 证书的对话框,表示它无法检查CRL . 我尝试禁用CRL检查并且对话框消失了,但它仍然使用Local \ Temp而不是DeploymentCache .

使用不同缓存位置的这种行为背后的原因是什么?这几乎就像Java发现了预 生产环境 版本不值得信任的东西,并拒绝缓存其JNLP .

Edit: In a nutshell:

  • 相同的客户端计算机,相同的设置 .

  • 加载UAT版本的应用程序,JNLP和JAR被缓存在DeploymentCache文件夹中(预期的行为) .

  • 加载应用程序的预 生产环境 版本,只有JAR被缓存在Local / Temp文件夹中,JNLP未缓存(意外行为) .

  • UAT和预 生产环境 版本之间的区别仅在于它们在JNLP中具有不同的 title ,具有不同内容的属性文件,以及托管预 生产环境 版本的Apache服务器使用的是Java无法检查其CRL的证书 . 应用程序JAR由不同的证书签名,Java没有问题验证 .

  • 我想知道Java Web Start的行为会有什么影响 . 我怀疑它与Apache服务器上的证书有关,但是我找不到任何关于它的文档 .

1 回答

相关问题