我构建了一个使用有效证书签名的Java Web Start应用程序 .
当我为应用程序加注星形时,安全对话框会正确显示,如图所示
http://www.java.com/en/img/download/trusted_signed.jpg
我的问题是关于“不再显示”复选框 .
如果属性href出现在jnlp文件的jnlp标记中,则会出现复选框 .
如果该属性不存在,则不会出现复选框,并且每次都需要确认运行 .
(例如:<jnlp spec =“1.0”codebase =“http://docs.oracle.com/javase/tutorialJWS/samples/deployment/webstart_ComponentArch_DynamicTreeDemo”href =“dynamictree_webstart.jnlp”>
)
这是一个问题,因为我的jnlp文件位于受密码保护的目录下,如果指定了href,则Java Web Start应用程序会尝试将其作为其他资源进行检索 . (导致拒绝访问,因为只对浏览器会话进行了身份验证并且运行失败)
部署Java Web Start应用程序的文档说:
在部署至少在Java SE 6更新18版本或更高版本上运行的Java Web Start应用程序时,codebase和href属性是可选的 . 在部署将与以前版本的Java Runtime Environment软件一起运行的Java Web Start应用程序时,必须指定codebase和href属性 .
什么是正确的代码?有href还是没有?
这是BUG还是功能?
如何在不指定href属性的情况下显示“不再显示”复选框?
1 回答
经过大量的搜索和测试后,我们发现只有这些方法可用于Java Web Start应用程序,并使用受信任的第三方证书进行正确签名,并在JRE 1.7.0_51下部署并显示预期的安全对话框(使用"Do not show this again..."复选框) :
1)如上所述,使用启动文件自引用添加href =,例如:
对于通过ASP产生JNLP的网站,或者像上面提到的其他条件,这不是直截了当的 .
2)正确的事情:JAR显示它在控制台日志中没有显示Missing Blah-Blah-Blah清单属性 . 我们发现的7u51的最小额外清单属性必须存在( *s as test values ):
所以我们的工作完整构建脚本测试清单看起来像这样(生成版本):