Java Applet AccessControlException:访问被拒绝(SocketPermission) - 我在哪里修复?

时间:2012-04-10 05:04:50

标签: java security permissions applet accesscontrolexception

好吧,所以我有一个小程序,我正在尝试嵌入到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");

我想知道的是:我需要这两件事中的哪一件,我的代码应放在哪里?

3 个答案:

答案 0 :(得分:3)

我建议连接回下载applet的同一主机,Java安全管理器允许这样做。主机应该完全相同。编辑权限策略文件将无处可用,因为您必须在要运行applet的每台计算机上执行此操作

答案 1 :(得分:1)

最简单的解决方法是签署小程序。

答案 2 :(得分:0)

如EJP所述,获得信任的方法是对代码进行数字签名。有关详细信息,请参阅Signing and Verifying JAR Files

将策略文件部署到最终用户计算机上以便从互联网上发布的applet是不切实际的。当涉及到由您控制的机器网络时,问题就变成了 - 为什么不只是使用JWS应用程序。 JWS应用程序。仍然需要进行数字签名(或使用政策文件),但也更容易开发&部署。

请注意,“获得信任”并不需要对代码进行任何更改。相反,代码需要由您签名,并在提示时由最终用户信任。我想到的唯一“问题”是,如果使用JS调用applet方法,那么除非你进行一些代码调整,否则它会变得不可信。