从 Rhino 脚本中访问 Java 特权操作
Accessing Java Privileged Actions from within Rhino script
如何在 Java 中从 Rhino 中运行的 JavaScript 执行本地文件?我会考虑任何在 Rhino 环境中工作的方法。我目前对这个问题的探讨如下。
我正在通过java.lang.Runtime.exec尝试这样做,在Mozilla"脚本Java"教程的帮助下,我可以访问它。但是,这是一个受限的操作,因此直接调用它会给出访问控制异常。
为了解决这个问题,我需要使用 AccesController.doPrivileged 方法。下面是在 Java 中使用它的示例;
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
// Code goes here. Any permission checks within this
// run method will require that the intersection of the
// callers protection domain and the snapshot's
// context have the desired permission.
}
障碍是在javascript中复制PrivilegedAction的构造。
var ourRuntime = Packages.java.lang.Runtime.getRuntime();
//ourRuntime.exec("notepad.exe") //will raise Access Control Exception
var controller = Packages.java.security.AccessController.doPrivileged
var action = new Packages.java.security.PrivilegedAction(ourRuntime.exec("notepad.exe")) // somehow make this wwrk
controller.doPrivileged(action)
Mozilla Scripting Java
java.securit.AccessController
Java 6 脚本 API 支持 Rhino,因此您可以使用 doPrivileged 包装脚本的评估,并使用必要的权限执行整个脚本。Java 脚本 API 与 doPrivileged 相结合的示例在这里
我以
这种方式成功地启动了 KWrite(例如)。我基本上将运行时对象公开给嵌入式JavaScript解释器。
public class RunBasicScript {
public static void main(String[] args) {
// Get a handle to the JavaScript context
Context cx = Context.enter();
try
{
// Set up the standard JavaScript objects
// like Object, Function etc.
Scriptable scope = cx.initStandardObjects();
// Make Runtime.getRuntime available to our JavaScript code
Object exec = Context.javaToJS(Runtime.getRuntime(), scope);
ScriptableObject.putProperty(scope, "exec", exec);
// Build our awesome script
String script = "exec.exec('kwrite');";
// Now we execute the script
Object obj = cx.evaluateString(scope, script, "Testing", 1, null);
}
catch (Exception e)
{
System.err.println("Error : " + e);
}
finally
{
// We need to exit the Context.
Context.exit();
}
}
}
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 如何从Java/scala调用js美化程序
- 如何使用json将对象列表从java转换为javascript
- Java脚本时间添加
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 如何将字符串值从php页面发送到java脚本页面
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- DOM事件通过JSON转换为java
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- Java-彩票统计解析器
- 如何将变量数据从Java类获取到JavaScript
- Java脚本将URL转换为已保存的URL时出错
- 将这些正则表达式从javascript转换为Java
- 从 Rhino 脚本中访问 Java 特权操作