вызов функции подписанного апплета из javascript с java.security.AccessControlException: доступ запрещен - PullRequest
0 голосов
/ 04 марта 2012

все!

У меня есть подписанный апплет (с именем result в html) с простой функцией, как показано ниже:

    public  void killApplet() 
    {   
        AccessController.doPrivileged(new PrivilegedAction<Object>(){
           //@Override
           public Object run() {
           // kill the JVM
           System.exit(0); // or any other line here
           String str = "any string";
           return null;
        }
    }); 
    }

Код скрипта Java выглядит следующим образом:

    function exec_java() {
        document.result.killApplet();
    }

Когда я нажимаю кнопку, чтобы выполнить функцию Java:

<button type="button" id="buttontest" onclick="exec_java()">test</button>

Отображается исключение, как показано ниже:

java.security.AccessControlException: access denied

(java.io.FilePermission C:\Program Files\Java\jdk1.6.0_18\bin read)

Я использую Windows XP с версией IE, как показано ниже:

IE 7

Видение: 7.0.5730.13

Кто-нибудь из экспертов и подскажите, как сделать это исключение? Кроме того, странная вещь здесь - я могу без проблем вызвать простую функцию, как показано ниже:

       public int getNumberOfLines(){
            return number_of_lines;
       }

Любая помощь будет принята с благодарностью! PS: Не могу публиковать изображения, потому что, очевидно, я «новый»! У кого-нибудь есть рабочий образец, использующий?

    AccessController.doPrivileged(new PrivilegedAction<Object>()

Спасибо!

У Би

1 Ответ

0 голосов
/ 04 марта 2012
// kill the JVM
System.exit(0);

Апплет - это гость на веб-странице, на которой могут размещаться другие апплеты. Звонить System.exit(n) - все равно что гость, сжигающий гостевой дом. Не делайте этого! Таким образом, даже доверенному апплету не разрешено вызывать метод.

Лучший способ завершить апплет - позвонить:

showDocument(thanksForUsingOurAppletURL);
...