資源描述:
《使用servicemix(esb)發(fā)布一個(gè)外部的webservice》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、首先我們需要了解一下相關(guān)概念,什么SOA,什么是ESB?面向服務(wù)的體系結(jié)構(gòu)(Service-OrientedArchitecture,SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以一種統(tǒng)一和通用的方式進(jìn)行交互。這是完整的定義:1是一個(gè)組件模型2不同功能單元,稱為服務(wù)3服務(wù)之間通過接口和約定聯(lián)系起來4接口是中立的?ESB全稱為EnterpriseServiceBus,即企業(yè)服務(wù)總線。它
2、是傳統(tǒng)中間件技術(shù)與XML、Web服務(wù)等技術(shù)結(jié)合的產(chǎn)物。ESB提供了網(wǎng)絡(luò)中最基本的連接中樞,是構(gòu)筑企業(yè)神經(jīng)系統(tǒng)的必要元素。ESB的出現(xiàn)改變了傳統(tǒng)的軟件架構(gòu),可以提供比傳統(tǒng)中間件產(chǎn)品更為廉價(jià)的解決方案,同時(shí)它還可以消除不同應(yīng)用之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)器協(xié)調(diào)運(yùn)作,實(shí)現(xiàn)了不同服務(wù)之間的通信與整合。從功能上看,ESB提供了事件驅(qū)動(dòng)和文檔導(dǎo)向的處理模式,以及分布式的運(yùn)行管理機(jī)制,它支持基于內(nèi)容的路由和過濾,具備了復(fù)雜數(shù)據(jù)的傳輸能力,并可以提供一系列的標(biāo)準(zhǔn)接口。?Servicemix是什么?Servicemix是apache發(fā)布的一種ESB。參考官方頁http://se
3、rvicemix.apache.org?Servicemix上服務(wù)的實(shí)現(xiàn)Servicemix上可以直接發(fā)布Webservice和POJOs之類的程序或者模塊,也可以發(fā)布一個(gè)類似于代理的服務(wù)。從流程上來說:Servicemix使用consumer接受到客戶request,在Servicemix的服務(wù)列表中尋找服務(wù),并且發(fā)布一個(gè)EndPoint,然后再provider中發(fā)布一個(gè)指向目標(biāo)service的服務(wù)。?ServiceUnit?和?ServiceAssembly如字面意思,serviceunit就是一個(gè)一個(gè)的服務(wù)單元,而serviceassembly是這些單元的集
4、合在servicemix上發(fā)布一項(xiàng)服務(wù),其實(shí)是發(fā)布一個(gè)服務(wù)集(SA),在這個(gè)集合中,可能存在一個(gè)或者多個(gè)服務(wù)(SU)例如,我們有一個(gè)服務(wù)需要順序使用兩個(gè)webservice,那個(gè)我們可以定義兩個(gè)SU分別對應(yīng)不同的webservice,然后使用一個(gè)SA將這兩個(gè)SU統(tǒng)合起來這樣,我們就可以調(diào)用一個(gè)暴露在外面的服務(wù)(該SA的服務(wù)),來達(dá)到使用兩個(gè)webservice的目的?本文的目標(biāo)我們的目標(biāo)是讓Servicemix充當(dāng)一個(gè)Proxy,即將一個(gè)外部的WebService發(fā)布到ServiceMix服務(wù)當(dāng)中。使得客戶可以通過調(diào)用暴露在外面的Servicemix的服務(wù)端口來調(diào)
5、用實(shí)際上在其他服務(wù)器上的WebService。?實(shí)現(xiàn)這個(gè)目標(biāo),可以通過兩種組件完成。1,Servicemix-Http-bc2,Servicemix-CXF-bc?Http-bc的優(yōu)點(diǎn)是使用范圍非常的廣,缺點(diǎn)是使用非常麻煩。也就是說大多數(shù)組件都要我們自己定義。Cxf-bc的優(yōu)點(diǎn)是比較簡單。這個(gè)組件本身集成了對現(xiàn)有大多數(shù)Soap/Http形式的支持,對于沒有特定要求的使用來說是足夠了。?順便一提Http-se和Cxf-se,這兩個(gè)是相對于上面兩個(gè)而言的,這兩個(gè)是服務(wù)引擎,對象一般是實(shí)際的Class或者Application?Servicemix的教程參考:http:
6、//servicemix.apache.org/tutorials.htmlCXF教程參考:http://servicemix.apache.org/4-beginner-web-services-with-servicemix-and-cxf.html?本文使用CXF-bc來實(shí)現(xiàn),參考:http://servicemix.apache.org/servicemix-cxf-bc.html?所需工具:apache-Servicemix-3.2.2release(據(jù)官方說,開源變化很大,最新的比較完備,至少需要3.2以上版本)http://servicemix.ap
7、ache.org/download.htmlapache-Maven2.0以上版本http://maven.apache.org/download.htmlJDK1.5以上版本apache-axis2http://ws.apache.org/axis2/download.cgiapache-tomcatapacheeclipsewsdl插件(ServiceArchiveWizard-EclipsePlug-in,CodeGeneratorWizard-EclipsePlug-in等)http://ws.apache.org/axis2/tools/index.ht
8、ml?示例