《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于JAVA實現(xiàn)基于本體的Web服務(wù)發(fā)現(xiàn)

基于JAVA實現(xiàn)基于本體的Web服務(wù)發(fā)現(xiàn)

2009-02-02
作者:張 釙 朱 倩 李涓子 王克宏

1、引言?

隨著INTERNET應(yīng)用的普及和軟件技術(shù)的進(jìn)步,基于Web的網(wǎng)絡(luò)計算模式或INTERNET計算模式得到了廣泛的重視和應(yīng)用。目前,面向Web應(yīng)用的三層結(jié)構(gòu)(或多層結(jié)構(gòu))、構(gòu)件化的商務(wù)邏輯封裝、基于XML和Web Services的自動電子商務(wù)等理論和技術(shù)深入人心。而現(xiàn)有的這些Web技術(shù)并不能真正解決人們期待已久的智能搜索引擎、智能信息代理、智能交易代理等基于Web的個性化、智能化的服務(wù)。這正是語義Web(Semantic Web)要解決的問題。語義Web是對當(dāng)前Web的一種擴(kuò)展,它允許用戶更簡便地查找、共享以及組合信息。用本體來改進(jìn)目前Web Services,使之成為語義Web服務(wù)(Semantic Web Services),正是目前國際上語義Web研究中的共識?;诖?,W3C,DARPA等研究機(jī)制定了基于本體的,應(yīng)用于Web的技術(shù)標(biāo)準(zhǔn),如RDF、DAML和OWL等。?

同時,基于語義的自動Web Services發(fā)現(xiàn)機(jī)制是自動Web Services協(xié)作機(jī)制中的重要一環(huán),。提出這個問題的關(guān)鍵因素來源于Web Services本身的發(fā)展。因為隨著Web Services的不斷走向?qū)嶋H應(yīng)用,所提供的Web Services也越來越豐富,簡單的基于UDDI的Web Services發(fā)現(xiàn)機(jī)制已經(jīng)不能滿足這種不斷發(fā)展的需要。?

本文介紹的正是這樣一種Web Services發(fā)現(xiàn)系統(tǒng),此系統(tǒng)采用Struts基礎(chǔ)構(gòu)架實現(xiàn),并充分利用了已經(jīng)取得成果WODOS(Web Oriented Distributed Ontology System),展現(xiàn)了JAVA技術(shù)的可擴(kuò)展性可重用性。?

2、Struts介紹?

Struts是Apache公司Jarkata工程提供的開發(fā)Web應(yīng)用程序的框架(Framework)。它具有組件的模塊化,靈活性和重用性優(yōu)點,同時簡化了基于MVC的Web應(yīng)用程序開發(fā)。Struts框架基于Java技術(shù),Web應(yīng)用程序開發(fā)人員通過Struts可以充分利用面對對象設(shè)計、代碼重用以及“編寫一次、到處運行”的優(yōu)點。除此之外,Struts主要對應(yīng)用程序頁面顯示、表示和數(shù)據(jù)的后臺處理代碼進(jìn)行了抽象和分離,使得模塊易于劃分和管理,代碼易于維護(hù)。?

3、用MVC分析Struts?

接下來從MVC(Model-View-Control)角度觀察Struts框架中的組件:

1 Struts概覽

?????? MVC模式劃分:

*???????? 視圖

Struts采用JSP作為視圖。JSP頁面使用定制標(biāo)簽,全部表單元素都使用定制標(biāo)簽? 編碼,這樣頁面能夠很方便同控制器交互。每個表單都通過映射JSPServlet的請求這個方式指向一個控制器的特定入口。同時,Struts包含擴(kuò)展自定義標(biāo)簽庫,可以簡化創(chuàng)建完全國際化用戶界面的過程。

*???????? 控制器

Struts中,基本的控制器組件是Struts中的Action,用Struts提供基類,負(fù)責(zé)視圖和模型的交互??刂破鞯娜肟诙加?/SPAN>struts-config.xml的配置文件設(shè)置(由ActionMapping類進(jìn)行描述)。該配置文件將來自JSP的請求映射到一個Sevlet類進(jìn)行相應(yīng)的處理,并制定下一個視圖的位置。

*???????? 模型

Struts框架中,模型分為兩個部分:系統(tǒng)的內(nèi)部狀態(tài)和可以改變狀態(tài)的操作(事務(wù)邏輯)。內(nèi)部狀態(tài)通常由一組ActinForm、JavaBean表示。其中JavaBean有兩種作用:一是存儲來自客戶端的請求(代表是繼承ActionForm的子類);二是保存查詢結(jié)果集,用于頁面顯示(代表是用戶自定義的JavaBean)。根據(jù)設(shè)計或應(yīng)用程序復(fù)雜度不同,這些Bean可以是自包含的并具有持續(xù)的狀態(tài),或只在需要時才獲得數(shù)據(jù)(從某個數(shù)據(jù)庫)。大型應(yīng)用程序通常在方法內(nèi)部封裝事務(wù)邏輯(操作),這些方法可以被擁有狀態(tài)信息的bean調(diào)用;小型程序中,操作可能會被內(nèi)嵌在Action類,它是Struts框架中控制器角色的一部分,僅當(dāng)邏輯簡單時適合。

4、Struts框架應(yīng)用到WSIDS

4.1 WSIDS登錄主界面

圖2 WSIDS登錄主界面

從上圖可以看到,進(jìn)入WSIDS時,用戶可以選擇登錄或是進(jìn)行注冊。如果是WSIDS用戶登錄,需要輸入用戶名和密碼,驗證合法才能進(jìn)入功能操作主界面。這個界面對應(yīng)了Struts框架里的一個ActionForm——loginForm,它由用戶名(username)和密碼(password)組成(這里本論文使用Struts中的html標(biāo)簽),并帶有隱含值actionLogin,用于判斷用戶選擇的是“登錄”還是“注冊”;同時,loginForm對應(yīng)的動作(action)是login.do,(Struts中的轉(zhuǎn)向頁面均用.do表示)并且用戶提交登錄信息時,會進(jìn)行有效性驗證。?

4.2 Struts配置?

將Struts組件結(jié)合到一起靠配置文件struts-config.xml,它默認(rèn)位置是WEB-INFstruts-config.xml,其中定義了全局轉(zhuǎn)發(fā)、ActionMapping類、ActionForm bean和JDBC數(shù)據(jù)源。下面結(jié)合WSIDS登錄,具體論述上述問題:?

n???????? 配置全局轉(zhuǎn)發(fā)?

全局轉(zhuǎn)發(fā)用來在JSP頁之間創(chuàng)建邏輯名稱映射。轉(zhuǎn)發(fā)都可以通過對調(diào)用操作映射的實例來獲得。比如,我們設(shè)置了名為“notLogin”的全局轉(zhuǎn)發(fā)名字,作用是一旦系統(tǒng)發(fā)現(xiàn)用戶沒有合法登錄就試圖進(jìn)行操作時,激發(fā)的Action就會ActionMapping.findForward(“notLogin”);把用戶操作的頁面轉(zhuǎn)向NotLogin.htm,避免其進(jìn)行非法操作。?

n???????? 配置ActionMapping

ActionMapping對象幫助進(jìn)行框架內(nèi)部的流程控制,它們可將請求URI映射到Action類,并且將Action類與ActionForm bean相關(guān)聯(lián)。ActionServlet在內(nèi)部使用這些映射,并將控制轉(zhuǎn)移到特定Action類的實例。所有Action類使用execute方法(Struts1.1)實現(xiàn)特定應(yīng)用程序代碼,返回一個ActionForward對象,其中包括響應(yīng)轉(zhuǎn)發(fā)的目標(biāo)資源名稱。由于WSIDS用戶分三種角色,不用角色登錄進(jìn)入不同的功能操作主界面,因此當(dāng)用戶的用戶名和密碼驗證成功,就會從數(shù)據(jù)庫中查詢出其角色,根據(jù)角色轉(zhuǎn)向下一頁面。?

n???????? 配置ActionForm Bean

ActionServlet使用ActionForm來保存請求的參數(shù),這些bean的屬性名稱與HTTP請求參數(shù)中的名稱相對應(yīng),控制器將請求參數(shù)傳遞到ActionForm bean的實例,然后將這個實例傳送到Action類。比如Login.jsp中頁面變量username和password在LoginAction中:

可直接獲得變量值,便于在Action中進(jìn)行操作。?

n???????? 配置JDBC數(shù)據(jù)源

元素可以定義多個數(shù)據(jù)源。比如WSIDS使用了MySQL數(shù)據(jù)庫的org.gjt.mm.mysql.Driver驅(qū)動程序,連接到名為kpsdb數(shù)據(jù)庫上。?

n???????? 配置消息資源

Struts框架對國際化的支持是使用標(biāo)記,以及使用java.util數(shù)據(jù)包中定義的Locale和ResourceBundle類來實現(xiàn)Java2平臺對這些任務(wù)的支持。定義資源文件,其后綴名為properties,需要存儲在類的路徑下,而且它的路徑要作為初始化參數(shù)傳送給ActionServlet。?

為了實現(xiàn)國際化,所有的資源文件必須都存儲在基本資源文件所在的目錄中?;举Y源文件包含的是用默認(rèn)地區(qū)語言-本地語言編寫的消息。比如WSIDS的消息資源配置文件為ApplicationResources.properties,其對應(yīng)的其他特定語言編寫的資源文件名稱就應(yīng)該是ApplicationResources_xx.properties(xx為ISO編碼,如英語是en)。?

WSIDS的資源配置文件ApplicationResources.properties中,其中和登錄面相關(guān)的資源是:?

具體在Login.jsp中,作如下調(diào)用:

這樣做無疑使頁面所顯示的資源進(jìn)行維護(hù)變得簡單。?

4.3其它頁面

圖3 管理員操作主頁面和提交加入語義注解的WSDL文件頁面

圖4 瀏覽WSIDS服務(wù)庫頁面和基本本體瀏覽頁面

圖5 WSIDS用戶注冊頁面和增加規(guī)則頁面

圖6 WSIDS服務(wù)查詢請求界面和服務(wù)查詢結(jié)果界面

5、WODOS介紹?

WODOS(Web Oriented Distributed Ontology System),即面向web的分布式本體系統(tǒng)。它本身是完全采用JAVA編寫的一個語義Web支撐平臺,具有以下功能:支持中英文,可以將本體信息存于關(guān)系型數(shù)據(jù)庫中,支持RDF/OWL文件的導(dǎo)入導(dǎo)出,支持RQL查詢,第三方軟件可以通過OdoAPI進(jìn)行操作。還引入推理機(jī)制,可以對存于WODOS中的本體事實施以規(guī)則(基于F-Logic),并在這些規(guī)則的基礎(chǔ)上進(jìn)行推理。WODOS建立了統(tǒng)一的用戶界面,可以把對它的各種操作(如原有的RQL查詢、RDF文件導(dǎo)入導(dǎo)出和新加入的F-Logic操作等)集成在一起。?

WSIDS系統(tǒng)就是基于WODOS系統(tǒng)提供的語義Web基本功能,在Web Services發(fā)現(xiàn)的應(yīng)用方向上進(jìn)行了一個有機(jī)的結(jié)合,這也充分體現(xiàn)出JAVA本身的可擴(kuò)展性和可重用性。?

6、結(jié)束語?

本文通過對WSIDS系統(tǒng)的介紹,展示了Struts基礎(chǔ)構(gòu)架的應(yīng)用,并且基于已有的成果WODOS展示了JAVA技術(shù)的可擴(kuò)展性和可重用性。并且由于JAVA的跨平臺性,本系統(tǒng)可以運行于Linux、Windows的各種操作系統(tǒng),采用Struts使得其操作簡單,易于測試和維護(hù)。?

參考文獻(xiàn)?

1.? 徐劍軍等,“基于本體的智能Web服務(wù)”,計算機(jī)科學(xué),2002,第29卷第12期:92-94

2.? James Hendler. “Agents and the Semantic Web” IEEE Intelligent Systems March/April 2001:30-37

3.? Jeff Heflin and James Hendler. “A Portrait of the Semantic Web in Action” ?IEEE Intelligent Systems March/April 2001:54-59

4.? Sheila A. McIlraith, Tran Cao Son and Honglei Zeng. “Semantic Web Service” IEEE Intelligent Systems March/April 2001:46-53

5.? Tim Berners-Lee, James Hendler and Ora Lassila. “The Semantic Web”,SCIENTIFIC AMERICAN,May,2001:34-43?

6.? Omair Javed. “Semantic Web-Mobile Internet Technical Architecture”. Institute of Software Systems, Tampere University of Technology, 2003.5

7.? T. Sollazzo, S. Handshuch, S. Staab, and M. Frank: Semantic Web Service Architecture– Evolving Web Service Standards toward the Semantic Web. Proceedings of the Fifteenth International FLAIRS Conference, Pensacola, Florida, May 2002.

8.? Oussama Kassem Zein and Yvon Kermarrec. “An Approach For Describing/Discovering Services and For Adapting Them to the Needs of Users in Distributed Systems”. American Association for Artificial Intelligence,2004.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。