2012-07-14 79 views
0

使用我的Java小程序,我向www.google運行HTTP請求。但是瀏覽器顯示: 「java.security.AccessControlException:訪問被拒絕(」java.net.SocketPermission「」www.google.fr:80「」連接,解析「)」「java.security.AccessControlException:access denied(」java.net.SocketPermission「」www.google.fr:80「」connect,resolve「)」

我簽署了我的小程序:

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]'); 
} 
+0

你能分享你正在使用的類的代碼(它在建立連接的地方)嗎?你能夠使用該類連接到任何外部服務嗎? – 2012-07-14 16:22:51

回答

0

什麼JRE你有嗎?我記得1.6版本(如果我沒記錯的話)有一個關於網絡的「安全升級」,之後就會出現這種奇怪的現象。

原因是那些公開給你的javascript的Applet函數不能直接調用JRE的網絡功能。你必須從applet中的網絡調用中以某種方式解耦Javascript。

我用一種「消息總線」實現了它。 Javascript調用Applet公共函數,將「消息」放入內部總線,其中另一個小程序將其讀取並進行網絡調用。有效。

+0

嘗試''AccessController.doPrivileged(..)'而不是總線。 – 2012-07-15 23:42:20

相關問題