“java.security.AccessControlException:access denied(”java.net.SocketPermission“”www.google.fr:80“”connect,resolve“)”

时间:2012-07-14 16:02:24

标签: java javascript applet

使用我的Java小程序,我向www.google.fr运行HTTP请求,但浏览器显示: “java.security.AccessControlException:access denied(”java.net.SocketPermission“”www.google.fr:80“”connect,resolve“)”

我用以下方式签署了我的applet:

keytool -genkey -alias keyName
keytool -selfcert -alias keyName
jarsigner appletName.jar keyName

有时我会授权applet执行。 但有时候许可不会出现弹出窗口。

我用以下内容加载applet:

function loadApplet() {
    console.log('loadApplet [start]');
    $('#applet').html('<applet name="requestApplet" archive="applet.jar" code="GoogleRequest.class" height="10" width="10"></applet>');
    console.log(document.requestApplet.methodOfApplet()); // <-- Exception
    console.log('loadApplet [finish]');
}

1 个答案:

答案 0 :(得分:0)

你有什么JRE?我记得有一些1.6版本(.22,如果我没记错的话)有关于网络的“安全升级”,之后就开始出现这种奇怪的现象。

原因是那些公开给你的javascript的Applet函数无法直接调用JRE的网络功能。您必须以某种方式将Javascript与applet中的网络调用解耦。

我用一种“消息总线”实现了这个功能。 Javascript调用Applet公共函数,它将“消息”放入内部总线,其中另一个applet读取它并进行网络调用。有效。