AJAX 及使用 E4X 编写 Web 服务脚本,第 2 部分:用 E4X 创建新的 Web 服务
2010-03-09 00:00:00 来源:WEB开发网当然,可能的情况下在 E4X 中使用 Web 服务安全,可能不是那么有趣(我们还没有试过!)。所以将 E4X 嵌入到一个 Web 服务容器中非常有利。另一方面,如果您在实现一个非常简单的 Web 服务(比如没有 Web 服务 安全的考虑),您根本不需要一个 Web 服务容器。所以第三种选择就是将 Rhino/E4X 部署为一个 servlet 容器中的 servlet。如果您只是做简单的报头支持,比如说 Web 服务寻址,您可以在 E4X 中处理,实际上这个实现起来非常简单。
尽管在这篇文章中包括了 E4XServlet 和一个可以在下载中找到的样本压缩包的例子,但是我们着重介绍使用 Axis。
Axis 提供了一个非常简单的方法:通过将 JAR 文件加入到类路径环境变量中就可以加入新的提供者。为了实现这个方法,您需要 Axis 1.2 或者更高的版本。您可以从 Apache AXIS Web 服务引擎中下载。由于 Axis 之前发布的版本在保存脚本方面存在问题,所以我们推荐使用上面提到的版本。(如果遇到了类似服务器重新启动之后脚本不能工作的情况,可能是您使用的版本有这个缺陷,请使用新版本的 Axis 再次重新部署。)
E4X 提供者要求您使用 E4XProvider.jar(下面会用到)来更新 Axis 类路径,除此之外还要包含 rhino.jar 和 xbean.jar。
一旦更新了 Axis 类路径,您需要创建一个部署脚本并将其部署到 Axis 中。与使用一个 Java 实现的服务不同,在这个模型中我们不需要将任何代码部署到类路径中。相反,我们将代码放到部署描述符中,如本文中的一个例子 e4xstock.wsdd 所示。(请参阅下载。)
清单 1. e4xstock.wsdd
<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="E4XStock" provider="java:E4X">
<parameter name="type" value="body"/>
<documentation>
<![CDATA[
function service(x) {
var value = (x..*::Symbol=="IBM")?983:52.5;
var n = new Namespace("urn:quoteservice");
default xml namespace = n;
response =
<getQuoteReturn>
<Result>{value}</Result>
</getQuoteReturn>;
return response;
}
]]>
</documentation>
</service>
</deployment>
更多精彩
赞助商链接