我尝试在本地使用 GlassFish 4.1、JDK 1.7 更新 51 运行 Web 启动应用程序,但遇到了“应用程序被安全设置阻止”消息。
这是我尝试使其发挥作用的方法:
1.新增http://hostname.localdomain.com:8080到 Java 控制面板中的异常(exception)站点列表。也尝试过http://hostname.localdomain.com:8080/___JWSappclient/和 http://hostname.localdomain.com:8080/clientName.jnlp
2. 从 Glassfish 的 keystore.jks 导出 s1as key 并将其导入到 JRE cacerts:
$ keytool -exportcert -keystore keystore.jks -alias s1as -文件 server.csr
$ keytool -importcert -keystore jre/lib/security/cacerts -alias s1as -file server.csr
我可以看到用 s1as key 签名的 jar,但 javaws 仍然提示。 JNLP 由 Glassfish 使用 sun-application-client.xml 中的设置自动生成
感谢有关如何解决此错误的任何帮助。我意识到,如果我在客户端使用 JRE7 update 21,效果很好,但我想稍后尝试使用 Java 8,因此不能坚持使用 Java 7。如果重要的话,我正在使用 Ubuntu。
最佳答案
我已经复制了您的问题并有解决方法。
看来问题与 glassfish 4.1 自动生成的 jnlp 文件和新的 java security jdk 1.7 u 25 或更高版本有关。
如果您安装 java 1.7.0_21 或更早版本,您的 Java Web Start 应用程序将使用早期发行版中的 javaws 启动。
我使用 netbeans 8.0.2、java 1.8_31 和 GF 4.1 简化了这个问题。我创建了一个 Java EE“企业应用程序客户端”,没有更改任何代码。部署它后,您将无法从 glassfish 控制台运行它,也无法从 7.1 u25 或更高版本的任何 javaws 运行它。但是,如果您从命令行使用 javaws 7.1 u21 或更早版本,它将启动。 有趣的是,该应用程序运行在 java 1.8 u31 环境中。
一定是 glassfish 中的错误。
关于java - 使用 Glassfish 4.1 和 Java7 签名的 Java Web Start 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26307580/