自JDK 1.7起Java Web Start中断


问题内容

回答:通过我们的测试, 似乎 Java 7 Web
Start要求您使用SSL证书在服务器上托管资源。您的证书不必进行签名,但是未签名的证书将向客户端提示可忽略的信任消息。有关更多详细信息,请参见以下答案

我们已经使用了很多年的内部应用程序。为了简化此应用程序的维护,我们没有为员工提供该应用程序的可安装版本,我们只给他们一个指向.jnlp的链接,然后使用JWS在他们的盒子上启动它。到目前为止,这一切都很棒,但是一旦我们的任何员工将Java
7更新到JWS系统,他们的计算机就会停止工作。我们已经检查,重新检查甚至验证了我们的JNLP模式,这很好,这使我们认为Web Start本身存在问题。

当用户单击jnlp文件时,它将启动Java 7启动屏幕,然后开始下载我们需要的资源。从那里开始,它简单地挂起,并且JWS启动应用程序上的进度条保持为零。

有任何想法吗?这很大程度上是因为他们升级到Java7。与此同时,我们建议所有员工都应继续使用Java 6,直到另行通知。我们所有的代码均已正确签名。

这是我们的JNLP的副本:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp 
  spec="1.5+" 
  codebase="http://peiportal/updater">
  <information> 
    <title>PEI Portal Application</title>
    <vendor>Petz Enterprises, Inc.</vendor>
    <offline-allowed/>
  </information>
  <security>
      <all-permissions/>
  </security>
  <resources>
    <jar href="PEIPortalLauncher.jar"/>
  </resources>
  <application-desc/>
</jnlp>

问题答案:

当人们开始在Windows机器上安装Java
7时,我们最近遇到了这个问题。我们在三台不同的linux服务器上有jar文件的实例,发现可以从其中的两台下载该应用程序,一台是远程的,一台是本地的,而第三台也是本地的服务器。

关键在jnlp文件的代码库规范中。为了将jar文件成功下载到运行Java 7的Windows盒中,代码库必须指定“ https:…”而不是“
http:…”。

上面引用的远程服务器被设置为安全服务器,因此专门通过https进行设置。这两个本地服务器均未安全设置,但是可以正常工作的本地服务器恰巧在代码库规范中使用了“
https:”。更改其他服务器上的jnlp也使其正常工作。(我们的jnlp是模板化的,并且在源代码管理之外针对每次安装进行修改,因此可能存在差异。)

您可能需要删除Java控制面板中列出的所有无法运行的应用程序,以便与服务器上的新jnlp同步:进入Java控制面板的“常规”选项卡(可从Windows控制面板获得),按“视图”。
..”按钮,然后删除所有无效的应用程序。