宋海沂
(連云港師范高等專科學校科研處,江蘇 連云港 222005)
目前,數字圖書館應用系統的開發普遍采用多層分布式結構,并大多以組件技術(如COM或CORBA)為設計基礎,創建能夠在應用程序之間可重用和共享的組件模塊。但是,由于各自采用的平臺、協議、體系結構的差異,使得這種傳統的分布式系統設計模式面對基于異構平臺的Web應用系統的實施與集成的挑戰時,往往顯得力不從心,給數字圖書館的資源共享帶來了很大困難。近年來,隨著以XML(可擴展標記語言)和Web Services為基礎的新型分布式應用系統設計模式的崛起和發展,為解決這一難題提供了新的思路。
國際權威組織W3C(Word Wide Web Consortium)給Web Services的定義是:Web Services是被URI(Universal Resource Identifier)確定的一個軟件應用。它的接口和封裝是可以被XML定義描述和發現,并且支持與使用XML消息通過網絡協議的其他應用軟件進行直接交換。Web Services技術是建立在XML、SOAP、WSDL(Web Services Description Language)、UDDI(Universal Discovery Description and Integration)基礎之上的分布式應用架構[1-2]。
Web Services是獨立的、模塊化的應用,能夠通過因特網來描述、發布、定位以及調用。Web Services面向服務架構SOA(Service Oriented Architecture),包括3個部分。如圖1所示[3]。

與Web Services有關的操作主要有以下3種:
①發布(Publish)。服務提供者首先需要將服務進行一定描述并發布到注冊服務器上,注冊自己的功能及訪問接口。
②查找(Find)。服務請求方根據注冊服務器提供的規范接口發出查詢請求,通過Service broker查找以獲取綁定服務所需的相關信息。
③綁定(Bind)。服務請求方通過分析從注冊服務器中得到的服務綁定信息,包括服務的訪問路徑、服務調用的參數、返回結果、傳輸協議、安全要求等,對自己的系統進行相應配置,進而遠程調用服務提供者所提供的服務。
①良好的封裝性,調用時只考慮Web服務的功能列表,無需了解實現細節。②促進松耦合的分布式應用,只要Web應用的界面不變,其他任何變更,甚至遷移到其他平臺,對于調用者來說都是透明的。③基于Internet標準協議的開發和使用,提高了系統的開放性、通用性和擴展性。④通過跨平臺、透明化的動態業務集成,降低了系統復雜性。
美國著名情報學家蘭開斯特(F.Wilfrid Lancaster)認為,未來圖書館應該是沒有圍墻、沒有門檻、高度共享和無紙化的圖書館。上個世紀90年代以來,隨著網絡技術和計算機技術的飛速發展,這一“理念”正逐漸變為現實,但共享卻成為發展過程的一個“瓶頸”[5]。圖書館數字化的核心基礎是數據庫,但是由于異構數據庫間并不兼容,使得信息共享難以實現。基于XML的Web服務在信息服務機構中可以解決這一難題。因此,兩者的結合是未來圖書館信息共享問題的天然解決方式。
在綜合考察現有的分布式數字圖書館應用系統設計技術的基礎上,根據Web Services開發的基本原理,我們提出了基于XMLWeb服務構架的圖書館體系結構(如圖2)。

在這個結構中,單個圖書館既可以通過注冊機構(簡稱UDDI)來查找其他圖書館或信息源發布的Web服務,然后對其進行捆綁應用,直接提供給客戶使用,也可以針對自己的特色館藏創建Web服務,然后通過注冊機構進行對外發布,以供其他圖書館引用。
下面通過建立一個簡單的XMLWeb服務來介紹如何將Web服務應用到圖書館建設中。開發一個基于XMLWeb服務的數字圖書館主要有以下幾個步驟:①評估安全選項;②創建并測試基于XML的Web服務;③創建一個使用該Web服務的Web應用項目。
2.2.1 安全性選項
目前國內的一些數字圖書館(如:中國知網、萬方)在檢索全文信息時通常要求用戶是注冊(付費)用戶,這就需要對用戶進行身份認證。關于XMLWeb服務的安全保證有兩套選擇方案[6]。第一種是由內置的IIS安全選項組成。這些選項的好處是不需要額外的用戶數據庫,但對Internet應用來說,為每一個顧客創建一個域用戶記錄可能并不是最好的方案。第二種方案是提供自定義驗證。目前,Web服務安全采用的是已有的Internet和WWW的一些安全策略,例如數字簽名、XML加密技術和標準、訪問標準技術等。本示例采用了第二種方案。
2.2.2 創建基于XML的Web服務
目前,Web服務的構建平臺主要有IBM的Websphere,Microsoft的Visual Studio.net及Sun的Sun ONE。本系統采用的是SUN的J2EE,因為J2EE具有平臺獨立性、面向對象技術、多線程、動態性、安全性、健壯性和分布式等優點[7],使得Web服務的開發與應用變得非常簡單和方便。筆者側重介紹如何實現一個Web Service,即基于無狀態會話EJB組件的FindBook Web Service。編程模型采用RPC-StyleWeb Serviced。下面以FindBook Web Service開發為例,說明使用java ant工具開發基于Weblogic服務器的Web Service的實現方法。
生成FindBook.jar文件:Web Service的生成需要EJB.jar文件,因此,在EJB組件代碼實現以及部署描述文件ejb-jar.xml和weblogic-ejb-jar.xm l的基礎上,使用JAR命令生成FindBook.jar文件。具體過程如下:
①創建一個臨時目錄temp。
②拷貝已編譯好的FindBook EJB類文件及相關支持類文件至臨時目錄。
③在臨時目錄下創建META-INF子目標。
④將EJB的部署文件ejb-jar.xml和weblogic-ejb-jar.xm l拷貝至META-INF子目錄。
⑤利用jar命令創建FindBook.jar文件。
步驟如下:
①創建一個新目錄。
②將FindBook.jar文件和build.xml文件拷貝至新創建的目錄。
③運行ant命令,在本目錄中產生FindBook.ear文件。
部署Web Service:可直接將ear文件拷貝到BEA_HOME/config/domain/applications目錄。其中BEA_HOME指Weblogic的安裝主目錄。
至此,已完成基于Weblogic服務器的Web Service開發的所有工作,可以接受客戶端對Web Service的調用。
2.2.3 使用XMLWeb服務
可建一個新的項目來使用這個Web服務。下面以一個簡單的應用程序來展示如何調用XMLWeb服務。在J2EE框架中,JAX-RPC將客戶端調用轉換成一個基于HTTP請求的SOAP消息發送給服務器,服務器收到客戶請求,把SOAP消息轉換成方法調用服務器的Web Services方法,再通過JAX-RPC將結果包裝成SOAP消息形式返回給客戶。用JAX-RPC開發Web Services非常容易。一個Web Services有兩個文件:一個是接口,用來定義Web Services的遠端可以調用的方法;另外一個是實現了這個接口方法的類。以下是相關的部分代碼:
定義的Web Services方法的接口
import java.rm.iRemote;
import java.rm.iRemote Exception;
public interface Book extends Remote{
public Book id []get BookList( )//Web Services方法
throws Remote Exception;
public String orderBook(String bookName,int num)//Web Services方法
Throws Remote Exception;}
實現了上述接口的類如:
Public classBookImp1 implements Book{
Public Bookid[]get BookList()throws Remote Exception{
…}
Public String orderBook(String bookName,int num)throws Remote Exception{
…}}
綜上所述,如果采用Web服務來構架數字圖書館,就可以從真正意義上做到數字圖書館的共建共享。因為有了Web服務,我們就可以不必去關心某一數字圖書館采用的是什么操作系統以及何種開發工具,我們只需要去關心它發布的Web服務,然后進行具體應用即可。因此,基于XMLWeb服務的理念和技術的出現,將給未來圖書館的建設帶來新的思路。
XML的出現解決了在不同平臺/系統之間的數據結構/模式的差異,使得數據層在XML技術的支持下統一起來,XML成為了互聯網上的通用語。Web服務完全基于XML獨立于平臺、獨立于軟件供應商的標準,是創建可互操作的、分布式應用程序的新平臺。Web服務的目的就是實現語言無關、平臺無關、協議無關的互操作。
Web服務不僅是一些協議的集合、獨立應用實體的集合,還是一個集應用邏輯、商務智能、網絡技術、工作流管理、知識表示、邏輯推理、安全保密和信息集成等技術為一體的新興應用模式。基于XML的Web Services構建的數字圖書館是采用XML、SOAP、WSDL、UDDI、J2EE等多種開放標準而開發的,可以預期在不久的將來基于XML的Web Services將得到廣泛的應用,并為解決長期困擾用戶內部,尤其用戶之間的信息系統集成問題開辟有效途徑。
[1] Catalog of OMG Specifications.[2007-09-30.]http://www.omg.org/technology/documents/spec_catalog.htm.
[2] Web Services Architecture.2002-06-04[2007-09-30].http://www.w3.org/2002/ws/arch/2/08/wd-wsa-arch-20020821.html.
[3] 葉小陽.基于Web Services的分布式數字圖書館解決方案.圖書情報知識,2005(2):87-89.
[4] Hongbing Wang est..Web services:problems and future directions.Web Semantics:Science,Services and Agents on theWorld WideWeb,2004(1):309-320.
[5] 王本年等.Web智能研究現狀與發展趨勢.計算機研究與發展,2005(5):721-727.
[6] Paul Kearney.Message level security for web services.Information Security Technical Report,2005(10):41-50.
[7]Stephen Asbury,Scott R.Weiner著.王強等譯.Java企業極應用開發指南.北京:機械工業出版社,2004:13-25.