Tag: rhino

java中的脚本编写 – 来自Java 1.5中服务器端类文件的javascript

我有三种类型的get请求从移动设备传递到Web应用程序上的类文件。 由于移动设备不提供cookie,因此只有日志文件命中 in.ter.nal.ip ser.ver.ip:port 2009-06-05 09:14:44 GET /applicationname/mobiledevicexml reqtype=login&userid=xx### 200 87 – MercuryMobile/1.0 CFNetwork/342.1 Darwin/9.4.1 cookieArrayLength=0; 如果我可以在我的类文件中实例化javascript,并从类文件中生成一个javascript函数调用urchinTracker(),我可以替换那个无用的cookieArrayLength = 0; 有了一些有用的数据,urchin可以从日志文件中读取到分析报告中。 我们一直在研究使用Rhino编写Java脚本 ; Safari Bookshelf有: JavaTM中的脚本:语言,框架和模式 这帮助我们立即演示我们可以在类文件中运行javascript – 这在Java 6上开箱即用。 任何人都知道在Java 1.5或1.4上使用Rhino编写脚本的资源吗? 或者,任何从java 1.5运行javascript的建议都将不胜感激。

Java的JavaScript引擎

目前我在我的应用程序中使用Rhino。 我需要从中评估一些JavaScript ant get值(我不需要通过JavaScript使用Java类)。 但它太慢了。 也许有任何方法可以将V8与Java应用程序一起使用? 更新: 我有大量不同类型的对象。 我需要一种灵活的机制来validation并将这些对象转换为所需的forms(用户应该能够更改validation和转换的规则(在运行时),即用Java编写这些规则的硬编码不合适)。 现在一切都适用于Rhino,但性能很糟糕。 我想过使用NodeJS,但似乎与它进行通信,通过进程对象序列化等等 – 这些都将花费很多。

让Rhino JS看Java类

我正在玩Rhino ,我已经成功使用了stdlib中的Java类,但是没有使用我编译的Java代码。 例如,这很好用: print(new java.util.Date()); 但是使用NanoHTTPD (单个.java文件,没有名称空间,相同的文件夹),我根本就没有运气: js> new Packages.NanoHTTPD() js: “”, line 4: uncaught JavaScript runtime exception: TypeError: [JavaPackage NanoHTTPD] is not a function, it is object. at :4 我确信这很简单。 我错过了什么? 编辑 :我发布它是这样的: $ CLASSPATH=. java -jar rhino.jar 或这个: $ java -classpath . -jar rhino.jar 或者我将NanoHTTPD.java移动到文件夹“./nano”中,添加了package nano; 到文件的顶部,编译它,然后替换“。” 在上面的类路径分配中使用“nano”。 无论如何,我在翻译中看到: js> java.lang.System.getProperty(“java.class.path”) /Users/me/blah/rhino.jar

如何将xml节点(作为字符串)附加到现有的XML Element节点(仅使用java内置函数)?

(免责声明:在RingoJS中使用Rhino) 假设我有一个带元素的文档,我看不出如何将节点作为字符串附加到此元素。 为了将字符串解析为xml节点然后将它们附加到节点,我尝试使用documentFragment但是我无法到达任何地方。 简而言之,我需要像.NET的.innerXML一样简单,但它不在java api中。 var dbFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance(); var dBuilder = dbFactory.newDocumentBuilder(); var doc = dBuilder.newDocument(); var el = doc.createElement(‘test’); var nodesToAppend = ‘Hi there’; el.appendChild(???); 如何在不使用任何第三方库的情况下执行此操作? [编辑]在示例中并不明显,但我不应该知道变量’nodesToAppend’的内容。 所以,请不要指向有关如何在xml文档中创建元素的教程。

从javascript表达式获取变量(Rhino)

我正在使用Rhino来评估js表达式,方法是将所有可能的变量值放在作用域中并评估匿名函数。 然而,表达式相当简单,我想只将表达式中使用的值放在表达式中。 代码示例: Context cx = Context.enter(); Scriptable scope = cx.initStandardObjects(null); // Build javascript anonymous function String script = “(function () {” ; for (String key : values.keySet()) { ScriptableObject.putProperty(scope, key, values.get(key)); } script += “return ” + expression + “;})();”; Object result = cx.evaluateString(scope, script, “”, 1, null); 我想从变量名称的表达式中获取所有标记。 例如,如果表达式是 (V1ND < 0 ? […]

在执行过程中停止Rhino引擎

Rhino引擎是否有api可以在中间停止执行脚本。 例如,我有一个脚本文件,其中有一个infinte循环。 如何在中间停止执行? 当然,我可以阻止启动Rhino引擎的jvm来执行脚本。 但是我不想因为这个原因而杀死整个jvm会话,因为我已经以编程方式启动了脚本,并且Rhino Engine也在与我的应用程序相同的JVM中运行。

如何使用Maven classpath来运行Java主类?

我目前正在使用Maven构建我的Rhino JavaScript项目,下载相关库,并在运行时管理类路径。 我可以通过使用Maven exec插件运行JavaScript入口点,方法如下: org.codehaus.mojo exec-maven-plugin 1.1 java org.mozilla.javascript.tools.shell.Main runtime path/to/entryPoint.js 这很好用,但问题是maven只需要10秒就可以启动,这比我的程序运行时间大10倍。 有没有办法: 提高maven exec插件的性能,以便花费更少的时间来启动,或者 导出maven将在运行时使用的类路径,以便我可以从脚本启动我的程序?

合理处理JSR223 Rhino抛出的ScriptException

我开始遇到一个非常有用的JSR223脚本环境的肮脏小秘密。 我正在使用Java 6 SE附带的内置版Rhino,通过JSR223的ScriptingEngine等访问它。 当我得到一个由我导出到Javascript环境的Java对象引起的exception时,它是一个ScriptingException ,它包装了一个包装我真正exception的sun.org.mozilla.javascript.internal.WrappedException (例如UnsupportedOperationException或者其他) ScriptingException为getFileName()返回null,为getLineNumber()返回-1。 但是当我查看消息和调试器时, WrappedException具有正确的文件名和行号,它只是不通过ScriptingException的getter方法发布它。 大。 现在我该怎么办? 我不知道我将如何使用sun.org.mozilla.javascript.internal.wrappedException,它不是公共类。

使用Rhino的Javascript解析器,如何获取注释?

我有一些javascript文件,并使用Rhino的javascript解析器解析它。 但我无法得到评论。 我怎样才能收到评论? 这是我的代码的一部分。 运行此代码,“comment”变量为null。 另外,在运行“astRoot.toSource();”时,它只显示javascript代码。 没有评论。 它消失了! [java code] public void parser() { AstRoot astRoot = new Parser().parse(this.jsString, this.uri, 1); List statList = astRoot.getStatements(); for(Iterator iter = statList.iterator(); iter.hasNext();) { FunctionNode fNode = (FunctionNode)iter.next(); System.out.println(“*** function Name : ” + fNode.getName() + “, paramCount : ” + fNode.getParamCount() + “, depth : ” + […]

在Rhino中访问java Maps&Lists作为JavaScript对象

有没有办法在Rhino中访问Java Maps和Lists作为JavaScript对象? 我有一个Map只包含其他地图和基元和字符串列表,我想将它传递给Rhino脚本并对其进行处理,然后将修改后的对象返回给Java – 但由于它们是java.util .Map和java.util.List对象,我不能使用标准的JavaScript关联数组语法。 即: fooMap.get(“keyName”)将起作用,但fooMap.keyName和fooMap[“keyName”]不会。 我不知道是否有特定于Rhino的方法来执行此操作,或者是否有一些转换/强制转换实用程序可以提供帮助。 Commons BeanUtils是不够的,因为要将Map转换为bean(可以通过关联数组语法访问),首先必须创建一个包含所有命名mutator / accessors的类。 我不会在运行时知道对象的结构。