你是一個渴望永遠站在技術最前沿的Java開發(fā)者嗎?軟件產(chǎn)業(yè)風云變幻,你渴望把握Web的未來,更重要的是,如何把自己數(shù)年的Java經(jīng)驗發(fā)揮到極致。要尋找這些問題的答案,你不必走得太遠,答案就在于SOAP。
SOAP(簡單對象訪問協(xié)議)是一種利用XML編碼數(shù)據(jù)的有線協(xié)議,它為Java的平臺無關性、可移植性帶來了更高層次的協(xié)同操作能力。在這個關于SOAP的系列文章的第二篇中,我介紹了Apache SOAP。作為SOAP規(guī)范的實現(xiàn)之一,Apache SOAP簡化了SOAP應用的構造。我們曾經(jīng)用Apache SOAP構造了兩個簡單的HelloWorld服務,以及調用這些服務的sayHelloTo()方法的客戶程序。我們看到,雖然創(chuàng)建SOAP服務相當簡單,但客戶程序必須完成許多額外的工作,例如它必須設置Call對象,調用Call對象的invoke()方法,然后分析作為調用結果返回的Response對象。
其實,用Apache SOAP創(chuàng)建SOAP服務的過程還可以變得更簡單,唯一的前提是:你必須懂得規(guī)定的幾種腳本語言之一。對我來說——以及對大多數(shù)Java開發(fā)者來說,幸運的是,這些腳本語言中包含了JavaScript。確實不錯,在Apache SOAP中,你可以用JavaScript創(chuàng)建SOAP服務。本文要介紹的就是用JavaScript創(chuàng)建SOAP服務的具體做法。
一、重新構造Apache SOAP Apache SOAP的腳本支持建立在Bean Scripting Framework(BSF,Bean腳本框架)的基礎之上。BSF原先由IBM開發(fā),現(xiàn)在作為一個源代碼開放的工程發(fā)行,它使得Java程序能夠運行用其他語言編寫的腳本,也使得其他腳本語言能夠使用已有的Java類。Apache SOAP利用了BSF的前一種能力。從Apache網(wǎng)站下載的標準二進制版本不支持腳本。具體地說,soap.jar不包含org.apache.soap.server.InvokeBSF類,而這個類是Apache SOAP和BSF的結合點和接口。Apache SOAP的開發(fā)者知道,并非每一個使用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。
接下來,你需要一個實際執(zhí)行重新構造操作的工具,即Ant。Ant也是一個Apache的軟件工程,它是一個基于Java的工具。Ant實際上和創(chuàng)建Web服務器Tomcat的工程同屬一個工程,即Jakarta。在Ant中,所有構造信息,例如構造目標、依賴關系等,都通過XML配置文件指定,這是Ant獨一無二的特點。此外,Ant是可擴展的。請參見本文最后“參考資源”部分收錄的文章,了解如何充分發(fā)揮Ant的潛能。你可以從參考資源提供的鏈接下載Ant,然后解開壓縮(我把它放入了C:盤的根目錄)。
現(xiàn)在,從Apache SOAP安裝目錄執(zhí)行如下命令:
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 |
|