在企業(yè)服務(wù)總線上傳遞消息附件的方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明提供了一種在企業(yè)服務(wù)總線上傳遞消息附件的方法及裝置,該方法包括:企業(yè)服務(wù)總線ESB容器將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為ESB容器內(nèi)部的Message對(duì)象,并判斷SoapMessage消息中是否攜帶附件;如果SoapMessage消息中攜帶有附件,則將附件轉(zhuǎn)換為Message對(duì)象中的字節(jié)數(shù)組;并通過(guò)Message對(duì)象傳遞附件。通過(guò)本發(fā)明,采用將SoapMessage消息中攜帶的附件轉(zhuǎn)換為字節(jié)數(shù)組往下流轉(zhuǎn),解決了相關(guān)技術(shù)中在處理攜帶有附件的Soap請(qǐng)求消息時(shí)存在不足的問(wèn)題,進(jìn)而達(dá)到了擴(kuò)展企業(yè)服務(wù)總線的應(yīng)用范圍以及提高系統(tǒng)性能效果。
【專(zhuān)利說(shuō)明】在企業(yè)服務(wù)總線上傳遞消息附件的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及企業(yè)服務(wù)總線(Enterprise Service Bus,簡(jiǎn)稱(chēng)ESB)領(lǐng)域,具體而言,涉及一種在企業(yè)服務(wù)總線ESB上傳遞消息附件的方法及裝置。
【背景技術(shù)】
[0002]上世紀(jì)的九十年代,當(dāng)各公司開(kāi)始尋求在不同的自動(dòng)化系統(tǒng)間交換信息時(shí),EAI也就應(yīng)運(yùn)而生了。EAI采用了一種簡(jiǎn)單有效的方式來(lái)解決不同應(yīng)用程序間的集成問(wèn)題。EAI軟件創(chuàng)建了一個(gè)交換中心,用于轉(zhuǎn)換不同應(yīng)用程序間的數(shù)據(jù)和消息。EAI交換中心使用這些適配程序?qū)⑺羞M(jìn)入數(shù)據(jù)的格式重新轉(zhuǎn)換為一種EAI交換中心內(nèi)部和外發(fā)適配程序都可以理解的通用格式,并將其稱(chēng)為規(guī)范格式。每個(gè)適配程序都是一個(gè)有自主權(quán)的實(shí)體軟件,存在多個(gè)分別負(fù)責(zé)管理各種應(yīng)用程序特定交互操作的管理層,同時(shí)還另具有一些傳輸層,用于管理與應(yīng)用程序和交換中心的連接。為實(shí)現(xiàn)EAI各組件間的連接,EAI交換中心會(huì)在所有的內(nèi)部集成過(guò)程中都采用一個(gè)如JMS的異步消息代理程序。除了重新更改消息負(fù)載格式夕卜,所有應(yīng)用程序間的交互都要經(jīng)過(guò)中間件的多次轉(zhuǎn)換。而且,應(yīng)用程序所需的(例如事務(wù)處理和驗(yàn)證/授權(quán)安全等)服務(wù)質(zhì)量功能通常都無(wú)法實(shí)現(xiàn)這些轉(zhuǎn)換。
[0003]EAI體系結(jié)構(gòu)有其固有的局限性,因此限制了它提供企業(yè)級(jí)可持續(xù)解決方案的能力。集中式交換中心使得企業(yè)(或者至少是企業(yè)中的幾個(gè)特定的人)可以采用中央控制的方式。但是不斷地將數(shù)據(jù)編組為規(guī)范格式或轉(zhuǎn)變回原有格式的代價(jià)就是造成額外的處理負(fù)擔(dān),也就是需要購(gòu)買(mǎi)高端服務(wù)器和管理程序?qū)崿F(xiàn)對(duì)其的管理。
[0004]ESB全稱(chēng)為Enterprise Service Bus,即企業(yè)服務(wù)總線,作為下一代的企業(yè)集成技術(shù),其與EAI —樣,ESB也是一項(xiàng)允許開(kāi)發(fā)人員集成使用不同中間件技術(shù)創(chuàng)建的異類(lèi)系統(tǒng)的技術(shù)。ESB—方面利用了它面向服務(wù)的優(yōu)勢(shì),同時(shí)還通過(guò)使用更有效、更靈活的內(nèi)部體系結(jié)構(gòu)進(jìn)一步改進(jìn)了它的上一代EAI產(chǎn)品。它是傳統(tǒng)中間件技術(shù)與XMUWeb服務(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)容的路由和過(guò)濾,具備了復(fù)雜數(shù)據(jù)的傳輸能力,并可以提供一系列的標(biāo)準(zhǔn)接口。
[0005]作為新一代的企業(yè)集成技術(shù),ESB企業(yè)服務(wù)總線,雖然有諸多優(yōu)點(diǎn),但是在處理攜帶有附件的Soap請(qǐng)求消息時(shí)不夠完善,還有很多不足的方面有待改進(jìn)。比如:ServiceMixESB是開(kāi)啟了一個(gè)文件輸入輸出流,把附件寫(xiě)到一個(gè)臨時(shí)的文件里面,等發(fā)送的時(shí)候再讀取進(jìn)來(lái);而JBoss ESB> OpenESB等還不支持附件傳輸。
[0006]針對(duì)相關(guān)技術(shù)中在處理攜帶有附件的Soap請(qǐng)求消息時(shí)存在不足的問(wèn)題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供了一種在企業(yè)服務(wù)總線ESB上傳遞消息附件的方法及裝置,以至少解決相關(guān)技術(shù)中在處理攜帶有附件的Soap請(qǐng)求消息時(shí)存在不足的問(wèn)題。
[0008]根據(jù)本發(fā)明的一個(gè)方面,提供了一種在ESB上傳遞消息附件的方法,包括:企業(yè)服務(wù)總線ESB容器將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為ESB容器內(nèi)部的Message對(duì)象,并判斷SoapMessage消息中是否攜帶附件;如果SoapMessage消息中攜帶有附件,則將附件轉(zhuǎn)換為Message對(duì)象中的字節(jié)數(shù)組;并通過(guò)Message對(duì)象傳遞附件。
[0009]優(yōu)選地,ESB容器將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為ESB容器內(nèi)部的Message對(duì)象之前,還包括:用戶(hù)側(cè)根據(jù)暴露的web服務(wù)地址生成SoapMessage消息,并將SoapMessage消息發(fā)送到ESB容器。
[0010]優(yōu)選地,通過(guò)Message對(duì)象傳遞附件之后,還包括:ESB容器對(duì)Message對(duì)象處理完畢之后,向用戶(hù)側(cè)返回響應(yīng)消息。
[0011]優(yōu)選地,通過(guò)Message對(duì)象傳遞附件包括:在ESB容器內(nèi)部流轉(zhuǎn)Message對(duì)象。
[0012]優(yōu)選地,當(dāng)所述Message對(duì)象需要在ESB系統(tǒng)的多臺(tái)ESB容器之間流轉(zhuǎn)時(shí),通過(guò)Message對(duì)象傳遞附件包括:不進(jìn)行消息格式適配而直接將Message對(duì)象發(fā)送至ESB系統(tǒng)中的另一 ESB容器。
[0013]優(yōu)選地,在需要訪問(wèn)第三方WEB服務(wù)的情況下,通過(guò)Message對(duì)象傳遞附件包括:將Message對(duì)象轉(zhuǎn)換回SoapMessage消息,并將SoapMessage消息發(fā)送到第三方WEB服務(wù)上。
[0014]根據(jù)本發(fā)明的另一方面,提供了一種在ESB上傳遞消息附件裝置,裝置應(yīng)用于ESB容器,包括:適配器,用于將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為ESB容器內(nèi)部的Message對(duì)象;判斷模塊,用于判斷SoapMessage消息中是否攜帶附件;適配器還用于在判斷模塊的判斷結(jié)果為是的情況下,將附件轉(zhuǎn)換為Message對(duì)象中的字節(jié)數(shù)組;傳遞模塊,用于通過(guò)Message對(duì)象傳遞附件。
[0015]優(yōu)選地,傳遞模塊包括:第一傳遞子模塊,用于在ESB容器內(nèi)部流轉(zhuǎn)Message對(duì)象。
[0016]優(yōu)選地,傳遞模塊包括:第二傳遞子模塊,用于在Message對(duì)象需要在ESB系統(tǒng)的多臺(tái)ESB容器之間流轉(zhuǎn)的情況下,不進(jìn)行消息格式適配而直接將Message對(duì)象發(fā)送至ESB系統(tǒng)中的另一 ESB容器。
[0017]優(yōu)選地,適配器還用于在需要訪問(wèn)第三方WEB服務(wù)的情況下,將Message對(duì)象轉(zhuǎn)換回SoapMessage消息;傳遞模塊包括第三傳遞子模塊,用于將轉(zhuǎn)換回的SoapMessage消息發(fā)送到第三方WEB服務(wù)上。
[0018]優(yōu)選地,該裝置還包括響應(yīng)模塊,用于在所述Message對(duì)象被處理完畢之后,向所述用戶(hù)側(cè)返回響應(yīng)消息。
[0019]通過(guò)本發(fā)明,采用將SoapMessage消息中攜帶的附件轉(zhuǎn)換為字節(jié)數(shù)組往下流轉(zhuǎn),解決了相關(guān)技術(shù)中在處理攜帶有附件的Soap請(qǐng)求消息時(shí)存在不足的問(wèn)題,進(jìn)而達(dá)到了擴(kuò)展企業(yè)服務(wù)總線的應(yīng)用范圍以及提高系統(tǒng)性能效果。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0020]此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0021]圖1是根據(jù)本發(fā)明實(shí)施例的傳遞消息附件的方法流程圖;
[0022]圖2是根據(jù)本發(fā)明實(shí)施例的傳遞消息附件的裝置結(jié)構(gòu)示意圖;
[0023]圖3是根據(jù)本發(fā)明實(shí)施例的附件在ESB流轉(zhuǎn)和在ESB模塊之間傳輸?shù)南到y(tǒng)模塊結(jié)構(gòu)框圖;
[0024]圖4是根據(jù)本發(fā)明實(shí)施例的整合的ESB系統(tǒng)結(jié)構(gòu)示意圖;
[0025]圖5是根據(jù)本發(fā)明實(shí)施例的請(qǐng)求消息SoapMessage的結(jié)構(gòu)示意圖;
[0026]圖6是根據(jù)本發(fā)明實(shí)施例的ESB上流轉(zhuǎn)的ESBMessage消息結(jié)構(gòu)示意圖;
[0027]圖7是根據(jù)本發(fā)明實(shí)施例的ESB容器接收到soap請(qǐng)求消息時(shí)的處理流程圖;以及
[0028]圖8是根據(jù)本發(fā)明實(shí)施例的ESB容器適配器處理接收的ESBMessage對(duì)象時(shí)的處理流程圖。
【具體實(shí)施方式】
[0029]下文中將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0030]圖1是根據(jù)本發(fā)明實(shí)施例的傳遞消息附件的方法流程圖。如圖1所示,該方法包括:
[0031]步驟S102,企業(yè)服務(wù)總線ESB容器將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為ESB容器內(nèi)部的Message對(duì)象,并判斷SoapMessage消息中是否攜帶附件。
[0032]步驟S104,如果SoapMessage消息中攜帶有附件,則將附件轉(zhuǎn)換為Message對(duì)象中的字節(jié)數(shù)組;并通過(guò)Message對(duì)象傳遞附件。
[0033]在本實(shí)施例中,通過(guò)將SoapMessage消息中攜帶的附件轉(zhuǎn)換為字節(jié)數(shù)組往下流轉(zhuǎn),解決了相關(guān)技術(shù)中在處理攜帶有附件的Soap請(qǐng)求消息時(shí)存在不足的問(wèn)題,進(jìn)而達(dá)到了擴(kuò)展企業(yè)服務(wù)總線的應(yīng)用范圍以及提高系統(tǒng)性能效果。
[0034]其中,在步驟S102之前,還包括:用戶(hù)側(cè)根據(jù)暴露的web服務(wù)地址生成SoapMessage消息,并將SoapMessage消息發(fā)送到ESB容器。
[0035]其中,在步驟S104之后,還包括:ESB容器對(duì)Message對(duì)象處理完畢之后,向用戶(hù)側(cè)返回響應(yīng)消息。
[0036]其中,步驟S104包括:在ESB容器內(nèi)部流轉(zhuǎn)Message對(duì)象;或者,將Message對(duì)象發(fā)送至ESB系統(tǒng)中的另一 ESB容器;或者,將Message對(duì)象轉(zhuǎn)換回SoapMessage消息,并將SoapMessage消息發(fā)送到第三方WEB服務(wù)上。
[0037]圖2是根據(jù)本發(fā)明實(shí)施例的傳遞消息附件的裝置結(jié)構(gòu)示意圖。如圖2所示,該裝置包括:適配器10,用于將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為ESB容器內(nèi)部的Message對(duì)象;判斷模塊20,用于判斷SoapMessage消息中是否攜帶附件;適配器10還用于在判斷模塊的判斷結(jié)果為是的情況下,將附件轉(zhuǎn)換為Message對(duì)象中的字節(jié)數(shù)組;傳遞模塊30,用于通過(guò)Message對(duì)象傳遞附件。
[0038]在本實(shí)施例中,通過(guò)適配器10將SoapMessage消息中攜帶的附件轉(zhuǎn)換為字節(jié)數(shù)組往下流轉(zhuǎn),解決了相關(guān)技術(shù)中在處理攜帶有附件的Soap請(qǐng)求消息時(shí)存在不足的問(wèn)題,進(jìn)而達(dá)到了擴(kuò)展企業(yè)服務(wù)總線的應(yīng)用范圍以及提高系統(tǒng)性能效果。[0039]其中,傳遞模塊30包括:第一傳遞子模塊31,用于在ESB容器內(nèi)部流轉(zhuǎn)Message對(duì)象;第二傳遞子模塊31,用于將Message對(duì)象發(fā)送至ESB系統(tǒng)中的另一 ESB容器;適配器10還用于將Message對(duì)象轉(zhuǎn)換回SoapMessage消息;傳遞模塊還包括第三傳遞子模塊33,用于將轉(zhuǎn)換回的SoapMessage消息發(fā)送到第三方WEB服務(wù)上。
[0040]其中,該裝置還包括響應(yīng)模塊40,用于在所述Message對(duì)象被處理完畢之后,向所述用戶(hù)側(cè)返回響應(yīng)消息。
[0041]圖3是根據(jù)本發(fā)明實(shí)施例的附件在ESB流轉(zhuǎn)和在ESB模塊之間傳輸?shù)南到y(tǒng)模塊結(jié)構(gòu)框圖。在本實(shí)施例中所描述的構(gòu)件、術(shù)語(yǔ)涉及到了 web服務(wù)和ESB引擎等方面的內(nèi)容,下面僅描述與本實(shí)施例相關(guān)的主要功能部件。如圖4所示,該系統(tǒng)包括:
[0042]ESB離線開(kāi)發(fā)工具,用戶(hù)利用ESB離線設(shè)計(jì)器根據(jù)自身業(yè)務(wù)需要畫(huà)出流程圖。
[0043]ESB容器,負(fù)責(zé)把開(kāi)發(fā)好的流程暴露為web服務(wù),供用戶(hù)調(diào)用。
[0044]ESB消息適配器,把soap請(qǐng)求消息轉(zhuǎn)換為企業(yè)服務(wù)總線中的message對(duì)象?;蛘叻催^(guò)來(lái)把message對(duì)象轉(zhuǎn)換為soap請(qǐng)求消息請(qǐng)求第三方服。
[0045]ESB離線開(kāi)發(fā)工具也就是指ESB流程設(shè)計(jì)器,用戶(hù)可以根據(jù)業(yè)務(wù)需要,把不同類(lèi)型的節(jié)點(diǎn)拖入畫(huà)板中,然后用連線依次把它們連起來(lái)就構(gòu)成了一個(gè)完整的流程。流程設(shè)計(jì)好后,可以將其導(dǎo)出,然后部署到ESB容器,最終暴露為web服務(wù)。其中,用戶(hù)是指:服務(wù)提供者、業(yè)務(wù)開(kāi)發(fā)者、業(yè)務(wù)使用者等。web服務(wù)(或稱(chēng)能力),是指發(fā)布在ESB引擎內(nèi),或者互聯(lián)網(wǎng)等公共網(wǎng)絡(luò)上的標(biāo)準(zhǔn)服務(wù),這些標(biāo)準(zhǔn)服務(wù)是指如Web服務(wù)/REST服務(wù)等形式的服務(wù),如國(guó)家氣象局官方站點(diǎn)提供的天氣預(yù)報(bào)服務(wù)、google公司提供的搜索服務(wù)這些互聯(lián)網(wǎng)等公共網(wǎng)絡(luò)服務(wù);或者通過(guò)ParlayX協(xié)議開(kāi)放出來(lái)發(fā)短信、發(fā)彩信等電信服務(wù)。
[0046]ESB容器是整個(gè)系統(tǒng)最核心的一個(gè)模塊,主要功能是根據(jù)設(shè)計(jì)好的流程圖,將其暴露為web服務(wù),供用戶(hù)調(diào)用。也負(fù)責(zé)接收并處理用戶(hù)的soap請(qǐng)求消息,并將處理結(jié)果返回給用戶(hù)。
[0047]其中,本文所描述的一種附件流轉(zhuǎn)機(jī)制,就是在ESB容器接收到用戶(hù)的soap請(qǐng)求消息時(shí)發(fā)揮作用。當(dāng)請(qǐng)求消息上來(lái)時(shí),該系統(tǒng)會(huì)判斷是否攜帶了附件,若有攜帶,則會(huì)把改附件轉(zhuǎn)換為字節(jié)數(shù)組往下流轉(zhuǎn);若沒(méi)攜帶,則不作任何處理。
[0048]ESB消息適配器,把soap請(qǐng)求消息轉(zhuǎn)換為企業(yè)服務(wù)總線中的message對(duì)象?;蛘叻催^(guò)來(lái)把message對(duì)象轉(zhuǎn)換為soap請(qǐng)求消息請(qǐng)求第三方服務(wù)。
[0049]本實(shí)施例主要闡述了一種在企業(yè)服務(wù)總線上附件的流轉(zhuǎn)機(jī)制,相比現(xiàn)有的系統(tǒng),本系統(tǒng)能夠很好地處理附件傳輸問(wèn)題。而且,通過(guò)適配器,還可以將這種附件流轉(zhuǎn)機(jī)制應(yīng)用到ESB為之整合的整個(gè)系統(tǒng),進(jìn)而提升了系統(tǒng)的整體功能和性能。最終,使得該系統(tǒng)能夠滿足更多客戶(hù)的需求。
[0050]圖4是根據(jù)本發(fā)明實(shí)施例的整合的ESB系統(tǒng)結(jié)構(gòu)示意圖。如圖4所示,是由多個(gè)ESB系統(tǒng)組成的集群。當(dāng)訪問(wèn)量巨大,單臺(tái)ESB容器不能很好地滿足業(yè)務(wù)需求時(shí),可以用該集群系統(tǒng)加于擴(kuò)展,把訪問(wèn)壓力分散到多臺(tái)ESB容器,從而減低每臺(tái)ESB容器的訪問(wèn)量,提升了整個(gè)系統(tǒng)的處理能力。
[0051]圖5是根據(jù)本發(fā)明實(shí)施例的請(qǐng)求消息SoapMessage的結(jié)構(gòu)示意圖。如圖5所示,是請(qǐng)求消息SoapMessage的結(jié)構(gòu)。當(dāng)用戶(hù)的請(qǐng)求消息發(fā)送到ESB容器時(shí),是以SoapMessage對(duì)象形式存在的。SOAPMessage對(duì)象由一個(gè)SOAP部分和一個(gè)或多個(gè)附件部分(可選)組成。SOAPMessage對(duì)象的SOAP部分是一個(gè)SOAPPart對(duì)象,包含了用于消息路由和標(biāo)識(shí)的信息,并可以包含特定于應(yīng)用程序的內(nèi)容。消息SOAP部分中的所有數(shù)據(jù)都必須是XML格式。
[0052]默認(rèn)情況下,新的SOAPMessage對(duì)象包含以下對(duì)象:
[0053]一個(gè) SOAPPart 對(duì)象;
[0054]一個(gè) SOAPEnvelope 對(duì)象;
[0055]一個(gè) SOAPBody 對(duì)象;
[0056]一個(gè) SOAPHeader 對(duì)象;
[0057]可以通過(guò)調(diào)用方法SOAPMessage.getSOAPPart ()檢索消息的SOAP部分。SOAPEnvelope對(duì)象是從SOAPPart對(duì)象檢索的,SOAPEnvelope對(duì)象用于檢索SOAPBody和SOAPHeader 對(duì)象。
[0058]SOAPPart sp=message.getSOAPPart ();
[0059]SOAPEnvelope se=sp.getEnvelope();
[0060]SOAPBody sb=se.getBody ();
[0061]SOAPHeader sh=se.getHeader ();
[0062]除強(qiáng)制性SOAPPart對(duì)象之外,SOAPMessage對(duì)象還可以包含零個(gè)或多個(gè)AttachmentPart對(duì)象,每個(gè)AttachmentPart對(duì)象都包含特定于應(yīng)用程序的數(shù)據(jù)(即附件信息)。SOAPMessage接口提供了 一些用于創(chuàng)建AttachmentPart對(duì)象的方法,以及一些將它們添加到SOAPMessage對(duì)象的方法。收到SOAPMessage對(duì)象的一方可以通過(guò)檢索各個(gè)附件部分來(lái)檢查消息內(nèi)容。
[0063]與SOAP消息的其余部分不同,附件不需要是XML格式,因此可以是簡(jiǎn)單文本或圖像文件等任何形式。因此,任何非XML格式的消息內(nèi)容必須在AttachmentPart對(duì)象中。
[0064]圖6是根據(jù)本發(fā)明實(shí)施例的ESB上流轉(zhuǎn)的ESBMessage消息結(jié)構(gòu)示意圖。如圖6所示,是在ESB企業(yè)服務(wù)總線上流轉(zhuǎn)的Message消息對(duì)象的結(jié)構(gòu)。它是有以下幾個(gè)部分構(gòu)成的:
[0065]Header (用來(lái)存放 From, To, Reply-to 等 Addressing 的信息);
[0066]Body (存放信息主體);
[0067]Attachment (用來(lái)存放附件等);
[0068]Properties (屬性);
[0069]Context (主要是存放一些類(lèi)似事務(wù)的信息等);
[0070]目前在Body里面一般來(lái)說(shuō)存放兩種格式的數(shù)據(jù),一個(gè)是串行化數(shù)據(jù)(SerializedObject);另外一個(gè)是XML文件,比如常見(jiàn)的SOAP的payload。在ESB中,有兩個(gè)定義,一個(gè)是 ESB-aware Message,我們上面所講的 Message 就是 ESB-aware Message,它是屬于 ESB內(nèi)部的Message對(duì)象。另一個(gè)是ESB unaware Message。比如SOAPMessage,不能把該對(duì)象直接放到ESB容器中處理的,必須把它轉(zhuǎn)換為Message對(duì)象才能在ESB內(nèi)部流轉(zhuǎn)。ESB內(nèi)部所交流/傳遞的都是消息,可見(jiàn)這個(gè)消息格式在ESB中多么重要。
[0071]圖7是根據(jù)本發(fā)明實(shí)施例的ESB容器接收到soap請(qǐng)求消息時(shí)的處理流程圖。如圖7所示,是ESB容器在接受到用戶(hù)請(qǐng)求消息時(shí)的處理流程。在ESB內(nèi)部,要么是一個(gè)service,要么是一個(gè)message。service就是業(yè)務(wù)流程,實(shí)現(xiàn)了具體的業(yè)務(wù)邏輯。而message就是service加工的對(duì)象,是攜帶信息的載體,各個(gè)流程內(nèi)部或者流程之間必須通過(guò)message來(lái)進(jìn)行信息的交換。該流程的步驟如下:
[0072]步驟S702:用戶(hù)根據(jù)暴露的web服務(wù)地址,生成請(qǐng)求消息,并把該請(qǐng)求消息發(fā)送到指定的ESB容器;
[0073]步驟S704-S710:ESB容器接受到用戶(hù)的請(qǐng)求消息后,對(duì)其進(jìn)行適配。把SoapMessage中的相應(yīng)模塊轉(zhuǎn)換為Message對(duì)象中的相應(yīng)模塊。最后再判斷是否攜帶附件,若有攜帶,則把它轉(zhuǎn)換為Message對(duì)象中的字節(jié)數(shù)組往下傳遞,而不用開(kāi)啟文件輸入輸出流存儲(chǔ)到磁盤(pán)上;
[0074]步驟S712 =ESB容器對(duì)Message對(duì)象處理完畢之后,返回給用戶(hù)響應(yīng)消息;
[0075]圖8是根據(jù)本發(fā)明實(shí)施例的ESB容器適配器處理接收的ESBMessage對(duì)象時(shí)的處理流程圖。如圖5所示,是整合ESB系統(tǒng)時(shí),消息適配器模塊的處理流程。當(dāng)message對(duì)象在多臺(tái)ESB容器上流轉(zhuǎn)時(shí),不需要把message對(duì)象轉(zhuǎn)換為SoapMessage對(duì)象,即可進(jìn)行信息交換。相比之前的ESB系統(tǒng)省略了消息格式適配過(guò)程,從而大大提高了系統(tǒng)性能。當(dāng)真正需要訪問(wèn)標(biāo)準(zhǔn)的第三方web服務(wù)時(shí),再通過(guò)消息適配器模塊進(jìn)行適配。適配步驟如下:
[0076]步驟S802:還原請(qǐng)求消息的body,從message對(duì)象中把body部分提取出來(lái),放到SoapMessage請(qǐng)求消息的對(duì)應(yīng)位置上。
[0077]步驟S804:判斷message對(duì)象中是否攜帶有附件信息,若無(wú)不做任何處理;若有,把該附件信息提取出來(lái),依次放到請(qǐng)求消息body之后,用相應(yīng)的分隔符分開(kāi),并修改頭部信息。
[0078]步驟S806:把適配好的SoapMessage消息發(fā)送到第三方web服務(wù)上。
[0079]步驟S808:獲取第三方web服務(wù)的返回消息,根據(jù)流程處理過(guò)程,ESB容器再把返回消息返回給用戶(hù)。
[0080]在另外一個(gè)實(shí)施例中,還提供了一種軟件,該軟件用于執(zhí)行上述實(shí)施例中描述的技術(shù)方案。
[0081]在另外一個(gè)實(shí)施例中,還提供了一種存儲(chǔ)介質(zhì),該存儲(chǔ)介質(zhì)中存儲(chǔ)有上述軟件,該存儲(chǔ)介質(zhì)包括但不限于光盤(pán)、軟盤(pán)、硬盤(pán)、可擦寫(xiě)存儲(chǔ)器等。
[0082]通過(guò)本發(fā)明的上述各實(shí)施例所描述的技術(shù)方案,不僅能夠讓附件在ESB企業(yè)服務(wù)總線流轉(zhuǎn),而且也能夠在服務(wù)之間以及各個(gè)應(yīng)用之間進(jìn)行傳遞。從而使得ESB容器不僅能夠處理簡(jiǎn)單的SOAP請(qǐng)求消息,而且也能夠處理攜帶附件的SOAP請(qǐng)求消息。從而,使ESB企業(yè)服務(wù)總線的應(yīng)用范圍更加廣泛。
[0083]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0084]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種在企業(yè)服務(wù)總線ESB上傳遞消息附件的方法,其特征在于,包括: 企業(yè)服務(wù)總線ESB容器將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為所述ESB容器內(nèi)部的Message對(duì)象,并判斷所述SoapMessage消息中是否攜帶附件; 如果所述SoapMessage消息中攜帶有附件,則將所述附件轉(zhuǎn)換為所述Message對(duì)象中的字節(jié)數(shù)組;并通過(guò)所述Message對(duì)象傳遞所述附件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,ESB容器將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為所述ESB容器內(nèi)部的Message對(duì)象之前,還包括: 所述用戶(hù)側(cè)根據(jù)暴露的web服務(wù)地址生成所述SoapMessage消息,并將所述SoapMessage消息發(fā)送到所述ESB容器。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過(guò)所述Message對(duì)象傳遞所述附件之后,還包括: 所述ESB容器對(duì)所述Message對(duì)象處理完畢之后,向所述用戶(hù)側(cè)返回響應(yīng)消息。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過(guò)所述Message對(duì)象傳遞所述附件包括: 在所述ESB容器內(nèi)部流轉(zhuǎn)所述Message對(duì)象。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述Message對(duì)象需要在ESB系統(tǒng)的多臺(tái)ESB容器之間流轉(zhuǎn)時(shí),通 過(guò)所述Message對(duì)象傳遞所述附件包括: 不進(jìn)行消息格式適配而直接將所述Message對(duì)象發(fā)送至ESB系統(tǒng)中的另一 ESB容器。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)需要訪問(wèn)第三方WEB服務(wù)時(shí),通過(guò)所述Message對(duì)象傳遞所述附件包括: 將所述Message對(duì)象轉(zhuǎn)換回所述SoapMessage消息,并將所述SoapMessage消息發(fā)送到所述第三方WEB服務(wù)上。
7.—種在企業(yè)服務(wù)總線ESB上傳遞消息附件的裝置,所述裝置應(yīng)用于ESB容器,其特征在于,包括: 適配器,用于將來(lái)自用戶(hù)側(cè)的SoapMessage消息轉(zhuǎn)換為所述ESB容器內(nèi)部的Message對(duì)象; 判斷模塊,用于判斷所述SoapMessage消息中是否攜帶附件; 所述適配器,還用于在所述判斷模塊的判斷結(jié)果為是的情況下,將所述附件轉(zhuǎn)換為所述Message對(duì)象中的字節(jié)數(shù)組; 傳遞模塊,用于通過(guò)所述Message對(duì)象傳遞所述附件。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述傳遞模塊包括: 第一傳遞子模塊,用于在所述ESB容器內(nèi)部流轉(zhuǎn)所述Message對(duì)象。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述傳遞模塊包括: 第二傳遞子模塊,用于在所述Message對(duì)象需要在ESB系統(tǒng)的多臺(tái)ESB容器之間流轉(zhuǎn)的情況下,不進(jìn)行消息格式適配而直接將所述Message對(duì)象發(fā)送至ESB系統(tǒng)中的另一 ESB容器。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于, 所述適配器還用于在需要訪問(wèn)第三方WEB服務(wù)的情況下,將所述Message對(duì)象轉(zhuǎn)換回所述SoapMessage消息;所述傳遞模塊包括第三傳遞子模塊,用于將轉(zhuǎn)換回的所述SoapMessage消息發(fā)送到第三方WEB服務(wù)上。
11.根據(jù)權(quán)利要求7至10任一項(xiàng)所述的裝置,其特征在于,還包括: 響應(yīng)模塊, 用于在所述Message對(duì)象被處理完畢之后,向所述用戶(hù)側(cè)返回響應(yīng)消息。
【文檔編號(hào)】H04L12/58GK103475565SQ201210187712
【公開(kāi)日】2013年12月25日 申請(qǐng)日期:2012年6月8日 優(yōu)先權(quán)日:2012年6月8日
【發(fā)明者】成小敏, 呂華衛(wèi), 麥富昌 申請(qǐng)人:中興通訊股份有限公司