java - 使用 Glassfish 4.1 和 Java7 签名的 Java Web Start 应用程序

标签 java glassfish

我尝试在本地使用 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/

相关文章:

java - 使用保留包名称访问包私有(private)变量

java - 我怎样才能让这个外部 JMS 客户端终止?

Glassfish Server 4.0(现在 : 4. 1.1)安装:找不到 JDK 并且不接受手动位置

java - SolrQuery 不返回少于 3 个字符的结果

java - connection.setRequestProperty 和明确写入 urloutputstream 是一样的吗?

java - Android 不保存 txt 文件

java - 如何从保存 BLOB 和 CLOB 数据的实体树生成 Xml

eclipse - Glassfish 服务器库在 Eclipse Kepler 中不可用?

glassfish - 如何指定默认的 glassfish-web.xml?

java - 将子集合复制到另一个对象