签名的Java小程序具有与在客户端上运行的普通Java应用程序相同的安全权限。对于一个特定的项目,我需要这些权限,并且需要作为JavaScript调用的结果执行特权操作。
问题在于,至少对于Ubuntu中的Firefox 3(目标浏览器和平台),当未签名的JavaScript通过调用小程序方法时,它将失去其特殊权限。由于签署JavaScript不是一个选项,因此我需要一种解决此限制的方法。
实现这一点的一种方法是在小程序启动时创建一个线程,并在主线程接收JavaScript调用时调用该线程上的方法。我已经实现了这个想法的工作原型,但我发现它有点笨拙,因为它使用了太多反射,并且不像我想要的那样容易重复使用。
是否有一种常见的、标准的方法来做我正在尝试做的事情?如果我的想法是正确的,你会如何以可重用的方式实现它?我试图实现的是一个允许将“在特权线程中运行方法”用于各种对象的框架。理想的、乌托邦式的解决方案将是:
问题在于,至少对于Ubuntu中的Firefox 3(目标浏览器和平台),当未签名的JavaScript通过调用小程序方法时,它将失去其特殊权限。由于签署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