2012-07-14 6 views
0

자바 애플릿을 사용하여 www.google으로 HTTP 요청을 실행합니다. 브라우저가 표시되지만 브라우저에 다음과 같이 표시됩니다. "java.security.AccessControlException : 액세스가 거부되었습니다 ("java.net.SocketPermission "www.google.fr:80"connect, resolve ")""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 

때때로 애플릿이 실행되도록 승인합니다. 하지만 팝업이 표시되지 않는 경우가 있습니다. JRE는

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

(사용중인 클래스에 대한 코드를 공유 할 수 있습니까?) 해당 클래스를 사용하는 외부 서비스에 연결할 수 있습니까? –

답변

0

이 무엇을 :

내가 가진 애플릿을로드? 나는 네트워킹과 관련하여 "보안 업그레이드"를 한 1.6 버전 (.22 기억이 나면 .22)을 기억하고있다. 그런 후에 이러한 종류의 기이함이 발생하기 시작했다.

이유는 자바 스크립트에 공용 인 애플릿 함수가 JRE의 네트워크 기능을 직접 호출 할 수 없기 때문입니다. 어떻게 든 Javascript와 애플릿 내부의 네트워크 호출을 분리해야합니다.

"메시지 버스"와 함께 구현했습니다. Javascript는 내부 버스에 "메시지"를 넣는 애플릿 공용 함수를 호출합니다.이 함수는 다른 애플릿이이를 읽고 네트워크 호출을합니다. 그것은 효과가 있었다.

+0

버스 대신'AccessController.doPrivileged (..)'를 시도하십시오. –

관련 문제