0

我有三种类型的获取请求,它们从移动设备传递到 Web 应用程序上的文件。因为移动设备不提供cookies,所以日志文件命中只有

in.ter.nal.ip   ser.ver.i.p: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,并从类文件中生成对 urchinTracker() 的 javascript 函数调用,我可以替换那个无用的 cookieArrayLength=0; 通过一些有用的数据,urchin 可以从日志文件中读取到分析报告中。我们一直在研究用 Rhino 编写 Java 脚本;Safari 书架有:

JavaTM 中的脚本:语言、框架和模式

这帮助我们立即演示了我们可以在类文件中运行 javascript——这在 Java 6 上开箱即用。

有人知道在 Java 1.5 或 1.4 上使用 Rhino 编写脚本的任何资源吗?

或者,对于从 java 1.5 运行 javascript 的任何建议将不胜感激。

4

3 回答 3

2

Java Scripting API ( ) 包是在 Java 6 中引入的javax.scripting,因此在 Java 1.4 或 5 中将不可用。作为默认安装,Java SE 6 带有一个精简版的 Mozilla Rhino,它通过javax.scripting.

但是,Mozilla Rhino本身不需要 Java 6。从需求页面:

最新版本的 Rhino 仅在 JDK 1.4 及更高版本中进行了测试。旧版本早在 1.1 就支持 JDK。

因此,要使用 Rhino,看来 Java 1.4 实际上已经足够了。

至于资源,Rhino 的文档似乎有很多信息。特别是,嵌入 Rhino部分可能有助于了解脚本如何工作。

当然,缺少该javax.scripting包意味着与 Rhino 本身的接口将需要使用 Rhino API 而不是 Java 6 原生脚本 API,但我猜功能将非常相似。我能看到的唯一缺点是,如果将来目标平台和/或使用另一种语言支持 Java 6,则可能需要重写以使用 Java Scripting API 而不是直接支持 Rhino。

于 2009-06-13T01:39:16.230 回答
1

[我正在发布答案,因为我没有足够的分数来对问题本身发表评论。]

您确定 urchinTracker() 函数将在网络浏览器之外运行吗?如果函数依赖于各种浏览器对象,如文档对象模型 (DOM) 或 XmlHttpRequest,则运行 Rhino JavaScript 解释器(这并不难)是不够的。

我建议您至少扫描 urchinTracker() 函数的内部,看看是否是这种情况。

于 2009-06-13T03:40:49.807 回答
0

有关在服务器端运行 JavaScript 的项目列表,请参阅服务器端 JavaScript 。

对于您的使用,使用 Rhino 似乎是可行的方法。

于 2009-06-13T01:44:59.880 回答