Jak mogę uzyskać podpisany aplet Java do wykonywania uprzywilejowanych operacji po wywołaniu z niepodpisanego Javascript?

Podpisane aplety Java mają taki sam poziom bezpieczeństwa, jak zwykła aplikacja Java uruchomiona na kliencie. Dla konkretnego projektu, japotrzeba te uprawnienia i japotrzeba do wykonywania operacji uprzywilejowanych w wyniku wywołania JavaScript.

Problem polega na tym, że przynajmniej dla Firefoksa 3 w Ubuntu (docelowa przeglądarka i platforma), gdy metoda apletu jest wywoływana przez niepodpisany JavaScript, traci swoje specjalne uprawnienia. Ponieważ podpisywanie JavaScript nie jest opcją, potrzebuję sposobu obejścia tego ograniczenia.

Jednym ze sposobów osiągnięcia tego jest utworzenie wątku podczas uruchamiania apletu i wywołanie metod w tym wątku, gdy główny wątek odbiera wywołania JavaScript. Zaimplementowałem działający prototyp tego pomysłu, ale uznałem go za nieco niezdarny, ponieważ używa zbyt wiele refleksji i nie jest tak łatwy do ponownego użycia, jak bym chciał.

Czy istnieje wspólny, standardowy sposób robienia tego, co próbuję zrobić? A jeśli mój pomysł jest właściwą drogą, jak byś się do tego wprowadził w sposób wielokrotnego użytku? To, co staram się osiągnąć, to struktura, która pozwala tej „uruchomionej metodzie-w-wątku-przywileju” na różne obiekty. Idealnym, utopijnym rozwiązaniem byłoby coś w rodzaju:

<code>// when the applet starts-up
PrivilegedExecuter priv = new PrivilegedExecuter(myObject); //or MyClass.class
// ...
// inside a JavaScript-called method (myObject has myMethod)
priv.myMethod(); // myMethod is run synchronously in a privileged thread
</code>

questionAnswers(2)

yourAnswerToTheQuestion