日期:2008-10-24  浏览次数:20327 次

  你是一个渴望永远站在技术最前沿的Java开发者吗?软件产业风云变幻,你渴望把握Web的未来,更重要的是,如何把自己数年的Java经验发挥到极致。要寻找这些问题的答案,你不必走得太远,答案就在于SOAP。

SOAP(简单对象访问协议)是一种利用XML编码数据的有线协议,它为Java的平台无关性、可移植性带来了更高层次的协同操作能力。在这个关于SOAP的系列文章的第二篇中,我介绍了Apache SOAP。作为SOAP规范的实现之一,Apache SOAP简化了SOAP应用的构造。我们曾经用Apache SOAP构造了两个简单的HelloWorld服务,以及调用这些服务的sayHelloTo()方法的客户程序。我们看到,虽然创建SOAP服务相当简单,但客户程序必须完成许多额外的工作,例如它必须设置Call对象,调用Call对象的invoke()方法,然后分析作为调用结果返回的Response对象。

其实,用Apache SOAP创建SOAP服务的过程还可以变得更简单,唯一的前提是:你必须懂得规定的几种脚本语言之一。对我来说——以及对大多数Java开发者来说,幸运的是,这些脚本语言中包含了JavaScript。确实不错,在Apache SOAP中,你可以用JavaScript创建SOAP服务。本文要介绍的就是用JavaScript创建SOAP服务的具体做法。

一、重新构造Apache SOAP
Apache SOAP的脚本支持建立在Bean Scripting Framework(BSF,Bean脚本框架)的基础之上。BSF原先由IBM开发,现在作为一个源代码开放的工程发行,它使得Java程序能够运行用其他语言编写的脚本,也使得其他脚本语言能够使用已有的Java类。Apache SOAP利用了BSF的前一种能力。从Apache网站下载的标准二进制版本不支持脚本。具体地说,soap.jar不包含org.apache.soap.server.InvokeBSF类,而这个类是Apache SOAP和BSF的结合点和接口。Apache SOAP的开发者知道,并非每一个使用SOAP的人都需要BSF,也并非每一个人都安装了脚本引擎,所以在soap.jar中省略了脚本支持。要想用脚本编写SOAP服务,你必须从源代码重新构造以便引入InvokeBSF类。

首先要从http://xml.apache.org/dist/soap/下载源代码(soap-src-2.0.zip)。然后,把下载得到的文件解压缩到Apache SOAP所安装的目录。在我这里,它是E:驱动器的根目录。完成后,你将在soap_2-0目录下得到一个src子目录,子目录中包含Apache SOAP的所有源代码。重新从源代码构造Apache SOAP之前,你还必须下载必需的BSF jar文件。在ftp://ftp.mozilla.org/pub/js/可以找到一个。请结合Mozilla的JavaScript引擎Rhino使用它,Rhino可以从http://www.mozilla.org/rhino/download.html下载一个ZIP文件得到。我把这个文件解压缩到E:盘根目录下,最终得到一个包含了Rhino的E:\rhino目录,我们感兴趣的是它的js.jar。

接下来,你需要一个实际执行重新构造操作的工具,即Ant。Ant也是一个Apache的软件工程,它是一个基于Java的工具。Ant实际上和创建Web服务器Tomcat的工程同属一个工程,即Jakarta。在Ant中,所有构造信息,例如构造目标、依赖关系等,都通过XML配置文件指定,这是Ant独一无二的特点。此外,Ant是可扩展的。请参见本文最后“参考资源”部分收录的文章,了解如何充分发挥Ant的潜能。你可以从参考资源提供的链接下载Ant,然后解开压缩(我把它放入了C:盘的根目录)。

现在,从Apache SOAP安装目录执行如下命令:


set
CLASSPATH=E:\jakarta-tomcat\lib\servlet.jar;E:\xerces-1_2_0\xerces.jar;
E:\soap-2_0\lib\bsf.jar
C:\build\bin\ant