我正在通过JNLP部署Java applet . Applet的功能按预期工作,我的问题在于运行时显示的安全警告 . 我已经广泛搜索了关于它们出现的时间和原因没有任何足够答案的答案,所以我想我试着在这里得到一些答案 .
前提:我的Applet使用自签名证书进行签名,该证书也作为可信CA导入(显示“更安全的”警告) . 我将使用Thawte或Verisign的真实证书进行制作,但现在这应该足够好了 . 无需外部权限,只能通过JNLP进行磁盘访问 .
由于我希望能够使用FileSaveService和FileOpenService,因此我在JNLP文件的安全性部分中指定了j2ee-application-client-permissions标记 .
Javascript用于调用applet中的公共函数 .
现在发生这种情况:当applet加载时,我得到一个安全提示,警告我这个Applet将以无限制的方式访问系统 . 警告是具有蓝色信息显示的受信任类型,而不是黄色警告 . 为什么我会收到此警告?即使我坚持只使用JNLP库,这总会出现吗?这个警告是如何确定的,是通过扫描我的代码还是通过阅读我可以改变的一些设置?是否有允许运行的类列表而没有收到此警告?
一旦applet加载并且我尝试打开文件对话框,我再次收到提示,说应用程序已请求读/写权限 .
我假设后来的警告是JNLP警告,因为它在我开始使用JNLP时首次出现 . 为什么我在启动时和使用过程中都会收到提示?我是否需要同时获得这两项证书?
最重要的是,我想摆脱第一个警告,因为让我的applet以不受限制的访问方式运行看起来很可怕(特别是因为这根本不是我的意图!) . 是否有任何文档可以清除触发警告的内容以及如何处理警告?
编辑:使用Janela验证文件没有错误 . 一切都按照应有的方式发布,这是我想要了解的警告 .
<script>
var attributes = {
id:'id',
codebase:'www.mydomain.com/jars/',
width:1,
height:1,
name:"Name"
};
var parameters = {
jnlp_href:"www.mydomain.com/jars/jnlp.jnlp"
}
deployJava.runApplet(attributes, parameters, '1.6');
</script>
JNLP文件
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="/jars/jnlp.jnlp">
<information>
<title>Title</title>
<vendor>My Company</vendor>
<description>Description</description>
<description kind="short">Desc</description>
<offline-allowed />
</information>
<resources>
<j2se version="1.6+" />
<jar href="ext1.jar" main="false" download="eager"/>
<jar href="ext2.jar" main="false" download="eager" />
<jar href="mainJar.jar" main="true" download="eager"/>
</resources>
<applet-desc
name="name"
main-class="com.myCompany.applet.mainClass"
width="1"
height="1">
</applet-desc>
<security>
<j2ee-application-client-permissions/>
</security>
</jnlp>
1 回答
您不必签署您的applet . 如果您不签名,则不会出现第一个警告 .
http://docs.oracle.com/javase/tutorial/deployment/applet/security.html