好吧,所以我有一个小程序,我正在尝试嵌入到HTML页面中,它正在抛出:
AccessControlException: access denied (java.net.SocketPermission someTarget connect, resolve)
这很好;我知道解决这个问题的方法是:
grant {
permission java.net.SocketPermission "someTarget", "connect, resolve";
};
或者
SocketPermission p1= new SocketPermission("someTarget", "connect,resolve");
我想知道的是:我需要这两件事中的哪一件,我的代码应放在哪里?
答案 0 :(得分:3)
我建议连接回下载applet的同一主机,Java安全管理器允许这样做。主机应该完全相同。编辑权限策略文件将无处可用,因为您必须在要运行applet的每台计算机上执行此操作
答案 1 :(得分:1)
最简单的解决方法是签署小程序。
答案 2 :(得分:0)
如EJP所述,获得信任的方法是对代码进行数字签名。有关详细信息,请参阅Signing and Verifying JAR Files。
将策略文件部署到最终用户计算机上以便从互联网上发布的applet是不切实际的。当涉及到由您控制的机器网络时,问题就变成了 - 为什么不只是使用JWS应用程序。 JWS应用程序。仍然需要进行数字签名(或使用政策文件),但也更容易开发&部署。
请注意,“获得信任”并不需要对代码进行任何更改。相反,代码需要由您签名,并在提示时由最终用户信任。我想到的唯一“问题”是,如果使用JS调用applet方法,那么除非你进行一些代码调整,否则它会变得不可信。