已簽名的Java Applets與客戶端上運行的普通Java應用程序具有相同的安全許可。對於特定的項目,我需要這些權限,而我需要需要來執行特權操作,作爲JavaScript調用的結果。如何從unsigned Javascript中調用已簽名的Java Applet執行特權操作?
現在,問題在於,至少對於Ubuntu(目標瀏覽器和平臺)中的Firefox 3,當通過未簽名的JavaScript調用applet方法時,它將失去其特殊權限。由於簽署JavaScript不是一種選擇,我需要一種方法來解決這個限制。
實現此目的的一種方法是在小程序啓動時創建線程,並在主線程接收到JavaScript調用時調用該線程上的方法。我已經實現了這個想法的工作原型,但是我發現它有點笨拙,因爲它使用了太多的反射,並且不像我想要的那樣容易重用。
有沒有一個共同的,標準的做我想做的事情?而且,如果我的想法是正確的路要走,你會如何以可重用的方式實施它?我想要實現的是一個框架,它允許將「運行方法在一個特權線程」的東西用於各種對象。理想的烏托邦解決方案應該是這樣的:
// 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