java 脚本 - 来自 Java 1.5 中服务器端类文件的 javascript
我有三种类型的 get 请求,这些请求从移动设备传送到 Web 应用程序上的 class 文件。 因为移动设备不提供 cookie,所以日志文件命中只有
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; 有了一些有用的数据,海胆就可以从日志文件中读取到分析报告中。 我们一直在研究使用 Rhino 编写 Java 脚本; Safari 书架有:
JavaTM 脚本:语言, 框架和模式
帮助我们立即演示了我们可以在类文件中运行 javascript ——这在 Java 6 上开箱即用。
有人知道在 Java 1.5 或 1.4 上使用 Rhino 编写脚本的任何资源吗?
或者,任何有关从 java 1.5 运行 javascript 的建议将不胜感激。
I have three types of get requests that are delivered to a class file on web application from a mobile device. Because the mobile device provides no cookies, the log file hit only has
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;
If I can instantiate javascript in my class file, and generate a javascript function call to urchinTracker() from inside the class file, I can replace that useless cookieArrayLength=0; with some useful data urchin can read from the log file into analytics reports.
We have been looking at scripting in Java with Rhino; Safari Bookshelf has:
Scripting in JavaTM: Languages,
Frameworks, and Patterns
which helped us immediately demo that we can run javascript in class files --this works out-of-the-box on Java 6.
Anyone know any resources for scripting with Rhino on Java 1.5 or 1.4?
Alternately, any suggestions for running javascript from java 1.5 would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Java 脚本 API (
javax.scripting
) 包是在 Java 6 中引入的,因此在 Java 1.4 或 5 中不可用。作为默认安装,Java SE 6 附带了 Mozilla Rhino 的精简版本,该版本通过javax.scripting
。但是,Mozilla Rhino 本身不需要 Java 6。从要求页面:
因此,要使用Rhino,看来Java 1.4实际上就足够了。
至于资源,Rhino 文档似乎有很多信息。 特别是,嵌入 Rhino 部分可能有助于了解脚本如何工作。
当然,缺少
javax.scripting
包意味着与Rhino本身的接口将需要使用Rhino API而不是Java 6本机脚本API,但我猜测该功能将会非常相似。 我能看到的唯一缺点是,如果将来目标平台将支持 Java 6 和/或使用其他语言,则可能需要重写以使用 Java 脚本 API,而不是直接支持 Rhino。The Java Scripting API (
javax.scripting
) package was introduced in Java 6, so that will not be available in Java 1.4 or 5. As the default installation, Java SE 6 comes with a stripped down version of Mozilla Rhino which is interfaced throughjavax.scripting
.However, Mozilla Rhino itself does not require Java 6. From the requirements page:
Therefore, to use Rhino, it appears that Java 1.4 is actually sufficient.
As for resources, the documentation for Rhino seems to have a lot of information. In particular, the Embedding Rhino section might be useful to see how the scripting will work.
Of course, the lack of the
javax.scripting
package means that interfacing to Rhino itself is going to require the use of the Rhino API rather than the Java 6 native scripting API, but I would guess that the functionality is going to be fairly similar. The only downside I can see is, if in the future, Java 6 is going to be supported on the target platform and/or using another language, it may necessitate a rewrite to use the Java Scripting API rather than directly supporting Rhino.[我在答案中发布,因为我没有足够的积分来对问题本身发表评论。]
您确定 urchinTracker() 函数将在网络浏览器之外运行吗? 如果函数依赖于各种浏览器对象,例如文档对象模型 (DOM) 或 XmlHttpRequest,那么运行 Rhino JavaScript 解释器(这并不太困难)是不够的。
我建议您至少扫描一下 urchinTracker() 函数的内部结构,看看是否是这种情况。
[I'm posting in an answer, because I don't have enough points to post a comment on the question itself.]
Are you sure that the urchinTracker() function will operate outside of a web browser? Running the Rhino JavaScript interpreter (which isn't too difficult) won't be enough if the function relies on various browser objects, like the Document Object Model (DOM) or XmlHttpRequest.
I suggest that you at least scan the internals of the urchinTracker() function to see if this is the case.
有关在服务器端运行 JavaScript 的项目列表,请参阅服务器端 JavaScript。
对于您的使用来说,使用 Rhino 似乎是一个不错的选择。
See Server-side JavaScript for list of projects that runs JavaScript at the server-side.
For your usage, using Rhino seems like the way to go.