|
我们将如何部署符合这个模型的服务?为了实现这一目的,我们在这篇文章中的例子里 提供了一种“宿主”技术——Apache Axis 提供者。提供者是这样一种方式:Axis 允许可插拔地插入新的服务提供者程序,而 E4X 提供者允许用户使用 E4X 脚本实现服务。
事实上,我们还有另外两种选择没有提到。第一种是在 J2EE 应用服务器中将 Rhino 和 E4X 插入到使用 JAX-RPC 和企业 Web 服务(EWS,也称作 JSR109)技术中。然而,这实际上有一定的困难,因为这些标准对于请求者与提供者采用标准的方法去访问整个 SOAP 包时并不容易。
总的来说,一个 Web 服务的容器(正如 Axis 或者一个实现 EWS 的 J2EE 服务器)为我们做了两件事。首先,这些容器具有工具与运行时环境支持使得在网络中传递的 XML 消息被映射成运行时系统中程序员所使用的对象。其次,他们通常为附加的 Web 服务标准提供支持,比如 Web 服务寻址(WS-Addressing)、Web 服务安全(WS-Security)和在消息中加入新的报头并且转换的 WS 事务(WS-Transactions),比如通过加密 XML 消息。我们这里所采用的方法将去除了在第一个方面的需要,因为这时我们已经将 XML 作为一个直接使用的本机对象,而不用再次的映射操作。
当然,可能的情况下在 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 所示。(请参阅下载。) |
|