亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方法

文檔序號:7762150閱讀:274來源:國知局
專利名稱:面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件領(lǐng)域,特別涉及面向服務(wù)的架構(gòu)(SOA)應(yīng)用系統(tǒng)技術(shù)領(lǐng) 域,具體是指一種面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法。
背景技術(shù)
隨著現(xiàn)代社會科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)系統(tǒng)已經(jīng)成為各行各業(yè)所不可缺少的工 具,而在其中起著核心作用的,則是計(jì)算機(jī)軟件系統(tǒng)。隨著企業(yè)的不斷發(fā)展和IT系統(tǒng)的不 斷建設(shè),企業(yè)的IT應(yīng)用系統(tǒng)越來越多,應(yīng)用日益復(fù)雜,企業(yè)對應(yīng)用系統(tǒng)間的互聯(lián)互通也提 出了更高的要求。應(yīng)用系統(tǒng)如何快速響應(yīng)企業(yè)的業(yè)務(wù)變化、如何最大限度的重用現(xiàn)有IT資 產(chǎn)是企業(yè)IT建設(shè)面臨的一大難題。SOA(Serivce-Oriented Architecture,面向服務(wù)的架構(gòu)),是一種新的構(gòu)造分布 式應(yīng)用程序的方法,它將企業(yè)應(yīng)用中分散的功能組織成可以共享的基于標(biāo)準(zhǔn)的服務(wù),這些 服務(wù)能夠迅速地被組合和重用,從而達(dá)到了快速響應(yīng)業(yè)務(wù)需求的目的;同時,在企業(yè)級應(yīng) 用開發(fā)領(lǐng)域,隨著應(yīng)用規(guī)模的不斷擴(kuò)大,各個系統(tǒng)之間的集成和交互變得越來越重要。Web Service由于其特有的平臺無關(guān)、編程語言無關(guān)等特性,成為系統(tǒng)集成中使用非常廣泛的 技術(shù),并且Web Service作為一項(xiàng)工業(yè)標(biāo)準(zhǔn),已經(jīng)得到越來越多廠商的支持。同時,Web Service 對外僅以 WSDL(Web 服務(wù)描述語言,Web Services Description Language)作為交 流的中介,它是一門基于XML的語言,描述了 Web Service的服務(wù)定義以及服務(wù)的通信,是 跨平臺的。在開發(fā)基于SOA應(yīng)用的系統(tǒng)中,如何方便、快速的將現(xiàn)有業(yè)務(wù)功能發(fā)布成Web Service供外部系統(tǒng)調(diào)用,在系統(tǒng)的集成階段變得日益重要。現(xiàn)有技術(shù)中,要將一個已有的 業(yè)務(wù)功能發(fā)布成Web Service,需要手工編寫一些配置文件,如在Axis2中發(fā)布一個Web Service需要編寫services, xml文件,在Xfire中也需要編寫service, xml文件,但與 Axis2的格式卻截然不同;這些文件晦澀難懂,手工編寫極易出錯,降低了生產(chǎn)效率。

發(fā)明內(nèi)容
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點(diǎn),提供一種直觀形象、操作快捷方 便、能夠?qū)崿F(xiàn)動態(tài)、快速發(fā)布Web Service、有效提高SOA應(yīng)用系統(tǒng)之間的集成效率、工作性 能穩(wěn)定可靠、適用范圍較為廣泛的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布 的方法。為了實(shí)現(xiàn)上述的目的,本發(fā)明的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快 速發(fā)布的方法如下該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法,所述的面向服 務(wù)的架構(gòu)應(yīng)用系統(tǒng)包括圖形化服務(wù)裝配平臺和服務(wù)運(yùn)行平臺,其主要特點(diǎn)是,所述的方法 包括圖形化服務(wù)裝配處理操作和服務(wù)運(yùn)行處理操作,所述的圖形化服務(wù)裝配處理操作,包括以下步驟
(11)所述的圖形化服務(wù)裝配平臺新建構(gòu)件包;(12)所述的圖形化服務(wù)裝配平臺在該新建的構(gòu)件包中創(chuàng)建裝配圖文件;(13)所述的圖形化服務(wù)裝配平臺根據(jù)用戶的操作,將現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)拖曳到 裝配圖中,并在裝配圖中生成相應(yīng)的構(gòu)件;(14)所述的圖形化服務(wù)裝配平臺為所生成的該構(gòu)件添加一個或多個服務(wù),并指定 服務(wù)的接口描述;(15)所述的圖形化服務(wù)裝配平臺根據(jù)需要為所述的添加的服務(wù)添加相應(yīng)的Web Service 綁定;(16)所述的圖形化服務(wù)裝配平臺保存裝配圖文件,且所述的面向服務(wù)的架構(gòu)應(yīng)用 系統(tǒng)對該裝配圖文件進(jìn)行編譯和編譯檢查;所述的服務(wù)運(yùn)行處理操作,包括以下步驟(21)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包;(22)所述的服務(wù)運(yùn)行平臺查找所述的構(gòu)件包下所有的服務(wù)裝配文件;(23)所述的服務(wù)運(yùn)行平臺解析所述的服務(wù)裝配文件;(24)所述的服務(wù)運(yùn)行平臺查找該構(gòu)件包下所有的Web Service類型擴(kuò)展文件;(25)所述的服務(wù)運(yùn)行平臺解析Web Service類型擴(kuò)展文件aegis ;(26)所述的服務(wù)運(yùn)行平臺根據(jù)構(gòu)件的實(shí)現(xiàn)類,生成對應(yīng)的Web Service描述文件 WSDL ;(27)所述的服務(wù)運(yùn)行平臺將所述的WSDL發(fā)布為Web Service,并動態(tài)生成相應(yīng)的 Servlet,同時將該Servlet注冊到所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中,監(jiān)聽用戶請求;(28)所述的服務(wù)運(yùn)行平臺將用戶請求數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)數(shù)據(jù)類型;(29)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)邏輯返回?cái)?shù)據(jù)轉(zhuǎn)換為SOAP信息。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的構(gòu)件包是指 包含一定功能邏輯的物理單元,且每個構(gòu)件包作為一個最小的部署單元部署到面向服務(wù)的 架構(gòu)運(yùn)行系統(tǒng)環(huán)境中,構(gòu)件包下包含實(shí)現(xiàn)業(yè)務(wù)功能的所有依賴資源。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的圖形化服務(wù) 裝配平臺將現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)拖曳到裝配圖中并在裝配圖中生成相應(yīng)的構(gòu)件,包括以下 步驟(131)所述的圖形化服務(wù)裝配平臺從資源管理器中拖拽現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)到可 視化編輯器中;(132)所述的圖形化服務(wù)裝配平臺對業(yè)務(wù)功能實(shí)現(xiàn)中的方法進(jìn)行逐一檢查,判斷 該方法的參數(shù)和返回值中是否包含有復(fù)雜數(shù)據(jù)類型;(133)如果是,則所述的圖形化服務(wù)裝配平臺彈出服務(wù)裝配向?qū)В谙驅(qū)е休斎霕?gòu) 件的名稱、服務(wù)的名稱,配置復(fù)雜數(shù)據(jù)類型中存放的元素的具體類型;(134)所述的圖形化服務(wù)裝配平臺在服務(wù)裝配圖中生成相應(yīng)的構(gòu)件,該構(gòu)件中包 含了一個服務(wù)。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的判斷該方法 的參數(shù)和返回值中是否包含有復(fù)雜數(shù)據(jù)類型,具體為
判斷該方法的參數(shù)和返回值的類型是否是List、Map或者Java Bean類型中的一 種或者多種。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的對該裝配圖 文件進(jìn)行編譯,具體為所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)根據(jù)裝配圖的定義,自動生成相應(yīng)的符合SCA規(guī) 范的服務(wù)裝配文件。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的對該裝配圖 文件進(jìn)行編譯檢查,包括以下步驟(161)所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件的實(shí)現(xiàn)是否存在; (162)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;(163)如果是,則所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件的服務(wù)接口描述是否 存在;(164)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;(165)如果是,則所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件是否實(shí)現(xiàn)了服務(wù)接口 描述中定義的方法;(166)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;如果是, 則直接結(jié)束。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的構(gòu)件為SCA 規(guī)范中定義的、能夠復(fù)用的最小功能單位。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的構(gòu)件的實(shí)現(xiàn) 是指構(gòu)件的具體功能實(shí)現(xiàn)。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)接口描 述為描述服務(wù)中所包含的業(yè)務(wù)方法的文件,所述的業(yè)務(wù)方法為發(fā)布為Web Service后該面 向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)對外所提供的業(yè)務(wù)方法。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)運(yùn)行平 臺遍歷構(gòu)件包,包括以下步驟(211)所述的服務(wù)運(yùn)行平臺查找構(gòu)件包所在的根路徑,遍歷所存在的所有構(gòu)件 包;(212)所述的服務(wù)運(yùn)行平臺解析構(gòu)件包的元數(shù)據(jù),元數(shù)據(jù)信息位于構(gòu)件包 META-INF 目錄下的文件 MANIFEST. MF ;(213)所述的服務(wù)運(yùn)行平臺按構(gòu)件包的依賴關(guān)系,對構(gòu)件包的進(jìn)行排序,以便于構(gòu) 件包的加載。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的MANIFEST. MF文件的內(nèi)容按Java中MANIFEST的定義規(guī)則進(jìn)行定義。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的構(gòu)件包的排 序規(guī)則為如果第一構(gòu)件包依賴于第二構(gòu)件包,第二構(gòu)件包依賴于第三構(gòu)件包,第四構(gòu)件包 不依賴其它構(gòu)件包,則相應(yīng)的排序列表為構(gòu)件包D、構(gòu)件包C、構(gòu)件包B、構(gòu)件包A。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)運(yùn)行平臺查找所述的構(gòu)件包下所有的服務(wù)裝配文件,包括以下步驟(221)所述的服務(wù)運(yùn)行平臺對已經(jīng)排序的構(gòu)件包列表進(jìn)行遍歷;(222)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包所在路徑以及子路徑下的所有文件,查找 其中的服務(wù) 裝配文件。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)運(yùn)行平 臺解析所述的服務(wù)裝配文件,包括以下步驟(231)所述的服務(wù)運(yùn)行平臺利用XML解析器解析服務(wù)裝配文件;(232)在服務(wù)裝配文件中對于結(jié)點(diǎn)Component生成構(gòu)件的內(nèi)存模型;(233)所述的服務(wù)運(yùn)行平臺解析構(gòu)件的服務(wù),并生成服務(wù)的內(nèi)存模型;(234)所述的服務(wù)運(yùn)行平臺解析構(gòu)件的實(shí)現(xiàn),并生成實(shí)現(xiàn)的內(nèi)存模型;(235)所述的服務(wù)運(yùn)行平臺在服務(wù)中解析所添加的Web Service綁定,并生成綁 定的內(nèi)存模型。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)運(yùn)行平 臺查找該構(gòu)件包下所有的Web Service類型擴(kuò)展文件,包括以下步驟(241)所述的服務(wù)運(yùn)行平臺對已經(jīng)排序的構(gòu)件包列表遍歷;(242)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包所在路徑下的所有文件,查找Web Service 類型擴(kuò)展文件aegis。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)運(yùn)行平 臺解析Web Service類型擴(kuò)展文件aegis,包括以下步驟(251)所述的服務(wù)運(yùn)行平臺利用XML解析器解析Web Service類型擴(kuò)展文件 aegis ;(252)所述的服務(wù)運(yùn)行平臺遍歷該Web Service類型擴(kuò)展文件aegis中所有 Method結(jié)點(diǎn),解析出方法的輸入、輸出參數(shù)的元數(shù)據(jù)信息。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)運(yùn)行平 臺根據(jù)構(gòu)件的實(shí)現(xiàn)類生成對應(yīng)的Web Service描述文件WSDL,包括以下步驟(261)所述的服務(wù)運(yùn)行平臺根據(jù)添加Web Service綁定的服務(wù)查找對應(yīng)的構(gòu)件;(262)所述的服務(wù)運(yùn)行平臺根據(jù)構(gòu)件的元數(shù)據(jù)查找構(gòu)件的實(shí)現(xiàn)類;(263)所述的服務(wù)運(yùn)行平臺根據(jù)服務(wù)的名稱,查找服務(wù)對應(yīng)的類型擴(kuò)展aegis定 義;(264)所述的服務(wù)運(yùn)行平臺根據(jù)類的定義以及類中方法元數(shù)據(jù)的定義,生成針對 此類的WSDL描述;(265)所述的服務(wù)運(yùn)行平臺建立服務(wù)名稱與服務(wù)生成WSDL的映射關(guān)系。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的步驟(27) 包括以下步驟(271)所述的服務(wù)運(yùn)行平臺建立Servlet的緩存ServletHost ;(272)所述的服務(wù)運(yùn)行平臺新建HttpServlet,以Web Service的名稱作為key放 入緩存ServletHost中;(273)所述的服務(wù)運(yùn)行平臺新建Servlet Filter,負(fù)責(zé)服務(wù)分發(fā),并配置到應(yīng)用 中;
(274)所述的服務(wù)運(yùn)行平臺接收到Http請求時,根據(jù)URL從緩存ServletHost中 判斷是否已經(jīng)注冊,如果注冊則把請求交由其Servlet進(jìn)行處理,否則繼續(xù)原有操作。
該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)運(yùn)行平 臺將用戶請求數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)數(shù)據(jù)類型,包括以下步驟(281)所述的服務(wù)運(yùn)行平臺從Servlet中讀取輸入流,構(gòu)造為SOAP Envelope ;(282)所述的服務(wù)運(yùn)行平臺從SOAP Envelope中分離出SOAP Header和SOAP Body 數(shù)據(jù);(283)所述的服務(wù)運(yùn)行平臺查找服務(wù)對應(yīng)構(gòu)件的業(yè)務(wù)實(shí)現(xiàn)類以及調(diào)用的方法;(284)所述的服務(wù)運(yùn)行平臺把SOAP Body數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)實(shí)現(xiàn)類要求的數(shù)據(jù)類 型;(285)所述的服務(wù)運(yùn)行平臺調(diào)用業(yè)務(wù)實(shí)現(xiàn)類。該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的服務(wù)運(yùn)行平 臺將業(yè)務(wù)邏輯返回?cái)?shù)據(jù)轉(zhuǎn)換為SOAP信息,包括以下步驟(291)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)返回?cái)?shù)據(jù)按WSDL的要求進(jìn)行序列化;(292)所述的服務(wù)運(yùn)行平臺生成構(gòu)件SOAP Envelope ;(293)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)數(shù)據(jù)序列化的結(jié)果添加到SOAP Envelope的 Body當(dāng)中;(294)所述的服務(wù)運(yùn)行平臺生成Servlet中的輸出流;(295)所述的服務(wù)運(yùn)行平臺將SOAP Envelope按byte數(shù)組的方式寫到Servlet中 輸出流當(dāng)中。采用了該發(fā)明的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法, 由于其中在開發(fā)期提供一個可視化的Web Service裝配工具,直觀形象、快捷方便的生成 Web Service裝配文件;同時,在運(yùn)行期能夠根據(jù)Web Service裝配文件的定義,自動對外 發(fā)布一個新的Web Service,從而達(dá)到動態(tài)、快速發(fā)布Web Service的能力,極大的提高了 SOA應(yīng)用系統(tǒng)之間的集成效率,從而不再需要手工為各種不同的Web Service發(fā)布系統(tǒng)編 寫晦澀難懂、極易出錯的服務(wù)配置文件;同時運(yùn)用本發(fā)明的方法可以快速、直觀的將現(xiàn)有的 業(yè)務(wù)功能發(fā)布為Web服務(wù),大大提高了應(yīng)用系統(tǒng)間的集成效率,而且工作性能穩(wěn)定可靠、適 用范圍較為廣泛。


圖1為本發(fā)明的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中 的服務(wù)裝配示意圖。圖2為本發(fā)明的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中 的復(fù)雜類型配置頁面示意圖。圖3為本發(fā)明的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中 的構(gòu)件包依賴關(guān)系示意圖。圖4為本發(fā)明的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法的 系統(tǒng)整體功能模塊示意圖。圖5為本發(fā)明的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中的WebService業(yè)務(wù)調(diào)用的流程示意圖。圖6為本發(fā)明的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法中 的服務(wù)裝配的內(nèi)部模型結(jié)構(gòu)類圖。
具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實(shí)施例詳細(xì)說明。請參閱圖1至圖6所示,該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布 的方法,所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)包括圖形化服務(wù)裝配平臺和服務(wù)運(yùn)行平臺,其中, 所述的方法包括圖形化服務(wù)裝配處理操作和服務(wù)運(yùn)行處理操作,所述的圖形化服務(wù)裝配處 理操作,包括以下步驟
(11)所述的圖形化服務(wù)裝配平臺新建構(gòu)件包;所述的構(gòu)件包是指包含一定功能 邏輯的物理單元,且每個構(gòu)件包作為一個最小的部署單元部署到面向服務(wù)的架構(gòu)運(yùn)行系統(tǒng) 環(huán)境中,構(gòu)件包下包含實(shí)現(xiàn)業(yè)務(wù)功能的所有依賴資源;(12)所述的圖形化服務(wù)裝配平臺在該新建的構(gòu)件包中創(chuàng)建裝配圖文件;(13)所述的圖形化服務(wù)裝配平臺根據(jù)用戶的操作,將現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)拖曳到 裝配圖中,并在裝配圖中生成相應(yīng)的構(gòu)件,包括以下步驟(a)所述的圖形化服務(wù)裝配平臺從資源管理器中拖拽現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)到可視 化編輯器中;(b)所述的圖形化服務(wù)裝配平臺對業(yè)務(wù)功能實(shí)現(xiàn)中的方法進(jìn)行逐一檢查,判斷該 方法的參數(shù)和返回值中是否包含有復(fù)雜數(shù)據(jù)類型,具體為判斷該方法的參數(shù)和返回值的類型是否是List、Map或者Java Bean類型中的一 種或者多種;(c)如果是,則所述的圖形化服務(wù)裝配平臺彈出服務(wù)裝配向?qū)В谙驅(qū)е休斎霕?gòu)件 的名稱、服務(wù)的名稱,配置復(fù)雜數(shù)據(jù)類型中存放的元素的具體類型;(d)所述的圖形化服務(wù)裝配平臺在服務(wù)裝配圖中生成相應(yīng)的構(gòu)件,該構(gòu)件中包含 了一個服務(wù);(14)所述的圖形化服務(wù)裝配平臺為所生成的該構(gòu)件添加一個或多個服務(wù),并指定 服務(wù)的接口描述;(15)所述的圖形化服務(wù)裝配平臺根據(jù)需要為所述的添加的服務(wù)添加相應(yīng)的Web Service 綁定;(16)所述的圖形化服務(wù)裝配平臺保存裝配圖文件,且所述的面向服務(wù)的架構(gòu)應(yīng)用 系統(tǒng)對該裝配圖文件進(jìn)行編譯和編譯檢查;對該裝配圖文件進(jìn)行編譯,具體為所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)根據(jù)裝配圖的定義,自動生成相應(yīng)的符合SCA規(guī) 范的服務(wù)裝配文件;對該裝配圖文件進(jìn)行編譯檢查,包括以下步驟(a)所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件的實(shí)現(xiàn)是否存在;所述的構(gòu)件為 SCA規(guī)范中定義的、能夠復(fù)用的最小功能單位;所述的構(gòu)件的實(shí)現(xiàn)是指構(gòu)件的具體功能實(shí) 現(xiàn);(b)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;
(c)如果是,則所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件的服務(wù)接口描述是否存 在;(d)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;(e)如果是, 則所述 的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件是否實(shí)現(xiàn)了服務(wù)接口描 述中定義的方法;所述的服務(wù)接口描述為描述服務(wù)中所包含的業(yè)務(wù)方法的文件,所述的業(yè) 務(wù)方法為發(fā)布為Web Service后該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)對外所提供的業(yè)務(wù)方法;(f)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;如果是,則 直接結(jié)束;所述的服務(wù)運(yùn)行處理操作,包括以下步驟(21)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包,包括以下步驟(a)所述的服務(wù)運(yùn)行平臺查找構(gòu)件包所在的根路徑,遍歷所存在的所有構(gòu)件包;(b)所述的服務(wù)運(yùn)行平臺解析構(gòu)件包的元數(shù)據(jù),元數(shù)據(jù)信息位于構(gòu)件包META-INF 目錄下的文件MANIFEST. MF ;所述的MANIFEST. MF文件的內(nèi)容按Java中MANIFEST的定義 規(guī)則進(jìn)行定義;(c)所述的服務(wù)運(yùn)行平臺按構(gòu)件包的依賴關(guān)系,對構(gòu)件包的進(jìn)行排序,以便于構(gòu)件 包的加載;所述的構(gòu)件包的排序規(guī)則為如果第一構(gòu)件包依賴于第二構(gòu)件包,第二構(gòu)件包依賴于第三構(gòu)件包,第四構(gòu)件包 不依賴其它構(gòu)件包,則相應(yīng)的排序列表為構(gòu)件包D、構(gòu)件包C、構(gòu)件包B、構(gòu)件包A ;(22)所述的服務(wù)運(yùn)行平臺查找所述的構(gòu)件包下所有的服務(wù)裝配文件,包括以下步 驟(a)所述的服務(wù)運(yùn)行平臺對已經(jīng)排序的構(gòu)件包列表進(jìn)行遍歷;(b)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包所在路徑以及子路徑下的所有文件,查找其 中的服務(wù)裝配文件;(23)所述的服務(wù)運(yùn)行平臺解析所述的服務(wù)裝配文件,包括以下步驟(a)所述的服務(wù)運(yùn)行平臺利用XML解析器解析服務(wù)裝配文件;(b)在服務(wù)裝配文件中對于結(jié)點(diǎn)Component生成構(gòu)件的內(nèi)存模型;(c)所述的服務(wù)運(yùn)行平臺解析構(gòu)件的服務(wù),并生成服務(wù)的內(nèi)存模型;(d)所述的服務(wù)運(yùn)行平臺解析構(gòu)件的實(shí)現(xiàn),并生成實(shí)現(xiàn)的內(nèi)存模型;(e)所述的服務(wù)運(yùn)行平臺在服務(wù)中解析所添加的Web Service綁定,并生成綁定 的內(nèi)存模型;(24)所述的服務(wù)運(yùn)行平臺查找該構(gòu)件包下所有的Web Service類型擴(kuò)展文件,包 括以下步驟(a)所述的服務(wù)運(yùn)行平臺對已經(jīng)排序的構(gòu)件包列表遍歷;(b)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包所在路徑下的所有文件,查找Web Service 類型擴(kuò)展文件aegis ;(25)所述的服務(wù)運(yùn)行平臺解析Web Service類型擴(kuò)展文件aegis,包括以下步驟(a)所述的服務(wù)運(yùn)行平臺利用XML解析器解析Web Service類型擴(kuò)展文件aegis ;(b)所述的服務(wù)運(yùn)行平臺遍歷該Web Service類型擴(kuò)展文件aegis中所有Method 結(jié)點(diǎn),解析出方法的輸入、輸出參數(shù)的元數(shù)據(jù)信息;
(26)所述的服務(wù)運(yùn)行平臺根據(jù)構(gòu)件的實(shí)現(xiàn)類,生成對應(yīng)的Web Service描述文件 WSDL,包括以下步驟(a)所述的服務(wù)運(yùn)行平臺根據(jù)添加Web Service綁定的服務(wù)查找對應(yīng)的構(gòu)件;(b)所述的服務(wù)運(yùn)行平臺根據(jù)構(gòu)件的元數(shù)據(jù)查找構(gòu)件的實(shí)現(xiàn)類; (c)所述的服務(wù)運(yùn)行平臺根據(jù)服務(wù)的名稱,查找服務(wù)對應(yīng)的類型擴(kuò)展aegis定義;(d)所述的服務(wù)運(yùn)行平臺根據(jù)類的定義以及類中方法元數(shù)據(jù)的定義,生成針對此 類的WSDL描述;(e)所述的服務(wù)運(yùn)行平臺建立服務(wù)名稱與服務(wù)生成WSDL的映射關(guān)系;(27)所述的服務(wù)運(yùn)行平臺將所述的WSDL發(fā)布為Web Service,并動態(tài)生成相應(yīng)的 Servlet,同時將該Servlet注冊到所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中,監(jiān)聽用戶請求,包 括以下步驟(a)所述的服務(wù)運(yùn)行平臺建立Servlet的緩存ServletHost ;(b)所述的服務(wù)運(yùn)行平臺新建HttpServlet,以Web Service的名稱作為key放入 緩存 ServletHost 中;(c)所述的服務(wù)運(yùn)行平臺新建Servlet Filter,負(fù)責(zé)服務(wù)分發(fā),并配置到應(yīng)用中;(d)所述的服務(wù)運(yùn)行平臺接收到Http請求時,根據(jù)URL從緩存ServletHost中判 斷是否已經(jīng)注冊,如果注冊則把請求交由其Servlet進(jìn)行處理,否則繼續(xù)原有操作;(28)所述的服務(wù)運(yùn)行平臺將用戶請求數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)數(shù)據(jù)類型,包括以下步驟(a)所述的服務(wù)運(yùn)行平臺從Servlet中讀取輸入流,構(gòu)造為SOAP Envelope ;(b)所述的服務(wù)運(yùn)行平臺從SOAP Envelope中分離出SOAP Header和SOAP Body 數(shù)據(jù);(c)所述的服務(wù)運(yùn)行平臺查找服務(wù)對應(yīng)構(gòu)件的業(yè)務(wù)實(shí)現(xiàn)類以及調(diào)用的方法;(d)所述的服務(wù)運(yùn)行平臺把SOAP Body數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)實(shí)現(xiàn)類要求的數(shù)據(jù)類型;(e)所述的服務(wù)運(yùn)行平臺調(diào)用業(yè)務(wù)實(shí)現(xiàn)類;(29)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)邏輯返回?cái)?shù)據(jù)轉(zhuǎn)換為SOAP信息,包括以下步驟(a)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)返回?cái)?shù)據(jù)按WSDL的要求進(jìn)行序列化;(b)所述的服務(wù)運(yùn)行平臺生成構(gòu)件SOAP Envelope ;(c)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)數(shù)據(jù)序列化的結(jié)果添加到SOAP Envelope的Body 當(dāng)中;(d)所述的服務(wù)運(yùn)行平臺生成Servlet中的輸出流;(e)所述的服務(wù)運(yùn)行平臺將SOAP Envelope按byte數(shù)組的方式寫到Servlet中輸 出流當(dāng)中。在實(shí)際使用當(dāng)中,請參閱圖1至圖5所示,該SOA應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service的 快速發(fā)布的方法,包括圖形化的服務(wù)裝配平臺和服務(wù)的運(yùn)行平臺。其中圖形化的服務(wù)裝配 平臺包括圖形化裝配、編譯、編譯檢查和快速創(chuàng)建一個新的構(gòu)件實(shí)現(xiàn);服務(wù)的運(yùn)行平臺包括 服務(wù)裝配文件的加載、服務(wù)的動態(tài)注冊、WSDL文件的自動生成以及監(jiān)聽用戶的請求。所述的圖形化裝配包括以下步驟(1)新建構(gòu)件包;(2)在新建的構(gòu)件包中,新建裝配圖文件;
(3)拖拽現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)到裝配圖中,將在裝配圖中生成一個構(gòu)件。(4)為生成的構(gòu)件添加一個或多個服務(wù),并指定服務(wù)的接口描述;(5)根據(jù)需要為上述新建的服務(wù)添加Web Service綁定;(6)保存裝配圖文件,系統(tǒng)會對裝配圖文件進(jìn)行編譯和編譯檢查。完成服務(wù)裝配后的裝配圖如圖1所示。所述的服務(wù)的運(yùn)行平臺包括以下步驟(1)遍歷構(gòu)件包;(2)查找構(gòu)件包下所有的服務(wù)裝配文件;(3)解析服務(wù)裝配文件;(4)查找構(gòu)件包下所有的Web Service類型擴(kuò)展文件;(5)解析Web Service類型擴(kuò)展文件aegis(6)根據(jù)構(gòu)件的實(shí)現(xiàn)類,生成對應(yīng)的WSDL ;(7)發(fā)布為Web Service,動態(tài)生成Servlet,并注冊到系統(tǒng),監(jiān)聽用戶請求(8)用戶請求數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)數(shù)據(jù)類型;(9)業(yè)務(wù)邏輯返回?cái)?shù)據(jù)轉(zhuǎn)換為SOAP信息。所述的構(gòu)件包是指包含一定功能邏輯的物理單元,每個構(gòu)件包作為一個最小的部 署單元部署到SOA運(yùn)行系統(tǒng)環(huán)境中,構(gòu)件包下包含實(shí)現(xiàn)業(yè)務(wù)功能的所有依賴資源,如實(shí)現(xiàn) 業(yè)務(wù)功能的Java文件、WSDL文件、服務(wù)裝配圖文件等,構(gòu)件包在物理上同一個文件夾對應(yīng)。在拖拽現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)到裝配圖的過程中,系統(tǒng)將檢查所拖拽的業(yè)務(wù)功能實(shí) 現(xiàn)中的每個方法的參數(shù)和返回值,在以下兩種情況下,系統(tǒng)將彈出參數(shù)類型配置向?qū)?1)參數(shù)和返回值是List、Map等復(fù)雜數(shù)據(jù)類型;(2)參數(shù)和返回值是Java Bean,且Java Bean中含有List、Map等復(fù)雜類型數(shù)據(jù) 類型的屬性;在彈出的向?qū)е?,可以對這些復(fù)雜類型進(jìn)行配置,如圖2所示;向?qū)瓿珊?,會?這些配置保存到特定的配置文件中。通過向?qū)?,可以很容易完成對?fù)雜數(shù)據(jù)類型的配置,從 而做到將含有復(fù)雜數(shù)據(jù)類型的現(xiàn)有業(yè)務(wù)功能快速發(fā)布成Web Service的能力。復(fù)雜數(shù)據(jù)類型的配置文件保存規(guī)則如下(1)如果業(yè)務(wù)功能實(shí)現(xiàn)類的方法中含有List、Map,則這些參數(shù)的配置信息將保存 在構(gòu)件包的META-INF目錄下,文件名格式為< 服務(wù)的名稱>.aegis ;(2)如果業(yè)務(wù)功能實(shí)現(xiàn)類的方法參數(shù)是JavaBean,且JavaBean中含有List、Map 類型的屬性,則會在Java Bean的同名包目錄下創(chuàng)建一個與Java Bean同名,后綴名為 aegis _ JavaBean KSi^ ;這些配置文件將在運(yùn)行期生成WSDL的過程中被使用,以便正確的為這些復(fù)雜類 型生成XML Schema表示。所述的編譯是指在保存裝配圖的過程中系統(tǒng)根據(jù)裝配圖的定義,自動生成一個符 合SCA規(guī)范的服務(wù)裝配文件(composite文件);所述的編譯檢查是指在保存裝配圖的過程中對裝配圖文件進(jìn)行正確性檢查,以便在開發(fā)期發(fā)現(xiàn)裝配文件中存在的錯誤并及時通知用戶進(jìn)行修正,所做的編譯檢查包括(1)構(gòu)件的實(shí)現(xiàn)存不存在;
(2)構(gòu)件的服務(wù)接口描述存不存在;(3)構(gòu)件的實(shí)現(xiàn)是否實(shí)現(xiàn)了服務(wù)接口描述中定義的方法;所述的構(gòu)件是指SCA規(guī)范中定義的構(gòu)件(Component),構(gòu)件是可以復(fù)用的最小功 能單位,通常一個構(gòu)件包含了服務(wù)定義、引用定義和構(gòu)件的實(shí)現(xiàn)定義; 所述的構(gòu)件實(shí)現(xiàn)是指構(gòu)件的具體功能實(shí)現(xiàn),如Java實(shí)現(xiàn)類可以作為一個構(gòu)件的 具體實(shí)現(xiàn);根據(jù)不同的構(gòu)件實(shí)現(xiàn),可以將構(gòu)件劃分為不同的類型,如Java構(gòu)件(具體實(shí)現(xiàn) 是Java類)、Spring構(gòu)件(具體實(shí)現(xiàn)是Spring配置文件)等;所述的服務(wù)接口描述是指一種文件,這種文件是語言中立的,可以是Java文件、 WSDL文件或其它文件,它描述了服務(wù)中包含的業(yè)務(wù)方法,這些業(yè)務(wù)方法就是發(fā)布為Web Service后,SOA應(yīng)用系統(tǒng)對外提供的業(yè)務(wù)方法;所述的快速創(chuàng)建一個新的構(gòu)件實(shí)現(xiàn)是指圖形化裝配平臺提供了根據(jù)裝配圖中構(gòu) 件的定義,自動創(chuàng)建一個新的構(gòu)件實(shí)現(xiàn),該構(gòu)件實(shí)現(xiàn)將根據(jù)構(gòu)件的服務(wù)定義自動生成實(shí)現(xiàn) 的代碼框架,通過以下兩種方式可以快速創(chuàng)建一個新的構(gòu)件實(shí)現(xiàn)(1)裝配圖中選擇一個構(gòu)件,通過快捷鍵F4可以快速創(chuàng)建一個新的構(gòu)件實(shí)現(xiàn);(2)裝配圖中選擇一個構(gòu)件,通過右鍵菜單“新建構(gòu)件實(shí)現(xiàn)”可以快速創(chuàng)建一個新 的構(gòu)件實(shí)現(xiàn);所述的服務(wù)運(yùn)行平臺,主要負(fù)責(zé)加載服務(wù)裝配文件,并根據(jù)服務(wù)裝配文件的定義 對外發(fā)布Web Service,主要步驟如下(1)解析并加載服務(wù)裝配文件(composite文件);(2)根據(jù)服務(wù)裝配文件的定義,自動向Web Service引擎中注冊新的Web Service ;(3)通過特定的URL可以獲取所注冊的Web Service的描述文件(WSDL);Composite文件是一種符合SCA規(guī)范的服務(wù)裝配文件,在本發(fā)明中,使用該文件來 描述應(yīng)用中的構(gòu)件和服務(wù),它是一種XM格式的文件。所述的遍歷構(gòu)件包包括以下步驟(1)查找構(gòu)件包所在的根路徑,遍歷所存在的所有構(gòu)件包;(2)解析構(gòu)件包的元數(shù)據(jù),元數(shù)據(jù)信息位于構(gòu)件包META-INF目錄下的文件 MANIFEST. MF, MANIFEST. MF文件的內(nèi)容按Java中MANIFEST的定義規(guī)則進(jìn)行定義,格式如 下Manifest-Version 1.0Bundle-Description Bundle-Name :com. esb# 構(gòu)件包名稱eos-webCtxPath :esb# 構(gòu)件包資源對應(yīng) web 路徑Bundle-Vendor :companyNameBundle-SymbolicName :com. esb# 構(gòu)件包唯一標(biāo)識Require-Bundle :com. eos. foundation # 依賴構(gòu)件包標(biāo)識Bundle-Version 1. 0. 0# 構(gòu)件包版本號(3)按構(gòu)件包的依賴關(guān)系,對構(gòu)件包的進(jìn)行排序,以便于構(gòu)件包的加載;如圖3所示,構(gòu)件包A依賴構(gòu)件包B,構(gòu)件包B依賴構(gòu)件包C,構(gòu)件包D不依賴其它構(gòu)件包,則形成的排序列表為構(gòu)件包D,構(gòu)件包C,構(gòu)件包B,構(gòu)件包A。所述的查找構(gòu)件包下所有的服務(wù)裝配文件包括以下步驟(1)對系統(tǒng)中排序的構(gòu)件包列表進(jìn)行遍歷;(2)遍歷構(gòu)件包所在路徑以及子路徑下的所有文件,查找其中的服務(wù)裝配文件。所述的解析服務(wù)裝配文件包括以下步驟
(1)利用XML解析器解析服務(wù)裝配文件;(2)服務(wù)裝配文件中對于結(jié)點(diǎn)Component生成構(gòu)件的內(nèi)存模型;(3)解析構(gòu)件的服務(wù),生成服務(wù)的內(nèi)存模型;(4)解析構(gòu)件的實(shí)現(xiàn),生成實(shí)現(xiàn)的內(nèi)存模型;(5)服務(wù)中解析添加的Web Service綁定,生成綁定的內(nèi)存模型。所述的查找構(gòu)件包下所有的Web Service類型擴(kuò)展文件包括以下步驟(1)對系統(tǒng)中排序的構(gòu)件包列表遍歷;(2)遍歷構(gòu)件包所在路徑下的所有文件,查找Web Service類型擴(kuò)展文件aegis。所述的解析Web Service類型擴(kuò)展文件aegis包括以下步驟(1)利用XML解析器解析Web Service類型擴(kuò)展文件aegis ;(2)遍歷其中所有Method結(jié)點(diǎn),解析出方法的輸入、輸出參數(shù)的元數(shù)據(jù)信息;所述的根據(jù)構(gòu)件的實(shí)現(xiàn)類,生成對應(yīng)的WSDL包括以下步驟(1)根據(jù)添加Web Service綁定的服務(wù)查找對應(yīng)的構(gòu)件;(2)根據(jù)構(gòu)件的元數(shù)據(jù)查找構(gòu)件的實(shí)現(xiàn)類;(3)根據(jù)服務(wù)的名稱,查找服務(wù)對應(yīng)的類型擴(kuò)展aegis定義;(4)根據(jù)類的定義以及類中方法元數(shù)據(jù)的定義,生成針對此類的WSDL描述;(5)建立服務(wù)名稱與服務(wù)生成WSDL的映射關(guān)系。所述的發(fā)布為Web Service,動態(tài)生成Servlet,并注冊到系統(tǒng),監(jiān)聽用戶請求包括 以下步驟(1)建立 Servlet 的緩存 ServletHost ;(2)新建HttpServlet,以 Web Service 的名稱作為 key 放入緩存 ServletHost 中;(3)新建Servlet Filter,負(fù)責(zé)服務(wù)分發(fā),并配置到應(yīng)用中;(4)接收到Http請求時,根據(jù)URL從緩存ServletHost中判斷是否已經(jīng)注冊,如果 注冊則把請求交由其Servlet進(jìn)行處理,否則繼續(xù)原有操作。所述的用戶請求數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)數(shù)據(jù)類型,調(diào)用業(yè)務(wù)邏輯包括以下步驟(1)從Servlet中讀取輸入流,構(gòu)造為SOAP Envelope ;(2)從 SOAPEnvelope 中分離出 SOAPHeader 和 SOAPBody 數(shù)據(jù);(3)查找服務(wù)對應(yīng)構(gòu)件的業(yè)務(wù)實(shí)現(xiàn)類以及調(diào)用的方法;(4)把SOAP Body數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)實(shí)現(xiàn)類要求的數(shù)據(jù)類型;(5)調(diào)用業(yè)務(wù)實(shí)現(xiàn)類。所述的業(yè)務(wù)邏輯返回?cái)?shù)據(jù)轉(zhuǎn)換為SOAP信息,返回給用戶包括以下步驟(1)業(yè)務(wù)返回?cái)?shù)據(jù)按WSDL的要求進(jìn)行序列化;(2)構(gòu)件 SOAPEnvelope ;(3)業(yè)務(wù)數(shù)據(jù)序列化的結(jié)果添加到SOAP Envelope的Body當(dāng)中;
(4)生成Servlet中輸出流;(5) SOAP Envelope 按 byte []方式寫到 Servlet 中輸出流當(dāng)中。
Web Service業(yè)務(wù)調(diào)用的流程參閱圖4所示。采用了上述的SOA應(yīng)用系統(tǒng)中Web Service的快速發(fā)布方法,使得開發(fā)以及發(fā)布 WebService變得異常簡單,開發(fā)效率大大提高,同時通過圖形化的開發(fā)以及發(fā)布方式,使得 用戶對Web Service的細(xì)節(jié)不需要太多的了解,降低了學(xué)習(xí)和維護(hù)的成本。其中,在開發(fā)期(1)新建構(gòu)件包;(2)在構(gòu)件中新建服務(wù)裝配圖文件,系統(tǒng)將自動打開該文件的可視化編輯器;(3)將現(xiàn)有業(yè)務(wù)功能實(shí)現(xiàn)裝配為服務(wù),包括以下步驟a)從資源管理器中,拖拽現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)到可視化編輯器中;b)系統(tǒng)對業(yè)務(wù)功能實(shí)現(xiàn)中的方法進(jìn)行逐一檢查,檢查方法的參數(shù)和返回值的類型 是否是 List、Map 禾口 Java Bean ;c)系統(tǒng)彈出服務(wù)裝配向?qū)?,在向?qū)е休斎霕?gòu)件的名稱、服務(wù)的名稱,配置復(fù)雜數(shù)據(jù) 類型(List、Map)中存放的元素的具體類型;d)系統(tǒng)在服務(wù)裝配圖中生成一個構(gòu)件,該構(gòu)件包含了一個服務(wù);(4)為要發(fā)布成Web Service的服務(wù)添加Web Service綁定;(5)保存服務(wù)裝配圖;系統(tǒng)將對服務(wù)裝配圖進(jìn)行編譯檢查,以及時的發(fā)現(xiàn)裝配圖 中存在的錯誤;(6)編譯檢查通過后,系統(tǒng)將對服務(wù)裝配圖進(jìn)行編譯,在輸出目錄下生成符合SCA 規(guī)范的服務(wù)裝配文件(composite文件);(7)部署服務(wù)裝配文件到服務(wù)器上。所述的服務(wù)的運(yùn)行平臺包括以下步驟(1)遍歷構(gòu)件包,包括以下步驟a)查找構(gòu)件包所在的根路徑,遍歷所存在的所有構(gòu)件包;b)解析構(gòu)件包的元數(shù)據(jù),元數(shù)據(jù)信息位于構(gòu)件包META-INF目錄下的文件 MANIFEST. MF, MANIFEST. MF文件的內(nèi)容按Java中MANIFEST的定義規(guī)則進(jìn)行定義,格式如 下Manifest-Version 1.0Bundle-Description Bundle-Name :com. esb# 構(gòu)件包名稱eos-webCtxPath :esb# 構(gòu)件包資源對應(yīng) web 路徑Bundle-Vendor :companyNameBundle-SymbolicName :com. esb# 構(gòu)件包唯一標(biāo)識Require-Bundle :com. eos. foundation #依賴構(gòu)件包標(biāo)識Bundle-Version 1. 0. 0# 構(gòu)件包版本號c)按構(gòu)件包的依賴關(guān)系,對構(gòu)件包的進(jìn)行排序,以便于構(gòu)件包的加載;再請參閱圖3所示,構(gòu)件包A依賴構(gòu)件包B,構(gòu)件包B依賴構(gòu)件包C,構(gòu)件包D不依 賴其它構(gòu)件包,則形成的排序列表為構(gòu)件包D,構(gòu)件包C,構(gòu)件包B,構(gòu)件包A。
(2)查找構(gòu)件包下所有的服務(wù)裝配文件,包括以下步驟a)對系統(tǒng)中排序的構(gòu)件包列表進(jìn)行遍歷;b)遍歷 構(gòu)件包所在路徑以及子路徑下的所有文件,查找其中的服務(wù)裝配文件,文 件對應(yīng)擴(kuò)展名為compoiste。(3)解析服務(wù)裝配文件,包括以下步驟a)利用XM解析器解析服務(wù)裝配文件;b)服務(wù)裝配文件中對于結(jié)點(diǎn)Component生成構(gòu)件的內(nèi)存模型Component ;c)解析構(gòu)件的服務(wù),生成服務(wù)的內(nèi)存模型Service ;d)解析構(gòu)件的實(shí)現(xiàn),生成實(shí)現(xiàn)的內(nèi)存模型Implementation ;e)服務(wù)中解析添加的Web Service綁定,生成綁定的內(nèi)存模型Binding,其類圖如 圖5所示。(4)查找構(gòu)件包下所有的Web Service類型擴(kuò)展文件,包括以下步驟a)對系統(tǒng)中排序的構(gòu)件包列表遍歷;b)遍歷構(gòu)件包所在路徑下的所有文件,查找Web Service類型擴(kuò)展文件aegis。(5)解析Web Service類型擴(kuò)展文件aegis,包括以下步驟a)利用XML解析器解析Web Service類型擴(kuò)展文件aegis ;b)遍歷其中所有Method結(jié)點(diǎn),解析出方法的輸入、輸出參數(shù)的元數(shù)據(jù)信息;(6)根據(jù)構(gòu)件的實(shí)現(xiàn)類,生成對應(yīng)的WSDL,包括以下步驟a)根據(jù)添加Web Service綁定的服務(wù)查找對應(yīng)的構(gòu)件;b)根據(jù)構(gòu)件的元數(shù)據(jù)查找構(gòu)件的實(shí)現(xiàn)類;c)根據(jù)服務(wù)的名稱,查找服務(wù)對應(yīng)的類型擴(kuò)展aegis定義;d)根據(jù)類的定義以及類中方法元數(shù)據(jù)的定義,生成針對此類的WSDL描述,默認(rèn)生 成 WSDL的樣式為 document, literal wrapper ;e)建立服務(wù)名稱與服務(wù)生成WSDL的映射關(guān)系。(7)發(fā)布為Web Service,動態(tài)生成Servlet,并注冊到系統(tǒng),監(jiān)聽用戶請求,包括 以下步驟a)建立 Servlet 的緩存 ServletHost ;b)新建 HttpServlet,以 Web Service 的名稱作為 key 放入緩存 ServletHost 中;c)新建Servlet Filter,負(fù)責(zé)服務(wù)分發(fā),并配置到應(yīng)用中;d)接收到Http請求時,根據(jù)URL從緩存ServletHost中判斷是否已經(jīng)注冊,如果 注冊則把請求交由其Servlet進(jìn)行處理,否則繼續(xù)原有操作。(8)用戶請求數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)數(shù)據(jù)類型,包括以下步驟a)從Servlet中讀取輸入流,構(gòu)造為SOAP Envelope ;b)從 SOAP Envelope 中分離出 SOAP Header 和 SOAP Body 數(shù)據(jù);c)查找服務(wù)對應(yīng)構(gòu)件的業(yè)務(wù)實(shí)現(xiàn)類以及調(diào)用的方法;d)把SOAP Body數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)實(shí)現(xiàn)類要求的數(shù)據(jù)類型;e)調(diào)用業(yè)務(wù)實(shí)現(xiàn)類。(9)業(yè)務(wù)邏輯返回?cái)?shù)據(jù)轉(zhuǎn)換為SOAP信息,包括以下步驟a)業(yè)務(wù)返回?cái)?shù)據(jù)按WSDL的要求進(jìn)行序列化;
b)構(gòu)件 SOAP Envelope ; c)業(yè)務(wù)數(shù)據(jù)序列化的結(jié)果添加到SOAP Envelope的Body當(dāng)中;d)生成Servlet中輸出流;e) SOAP Envelope 按 byte 數(shù)組(byte[])方式寫到 Servlet 中輸出流當(dāng)中。經(jīng)過以上步驟,開發(fā)和發(fā)布Web Service功能全部完成,從中可以得出采用了該發(fā) 明的SOA應(yīng)用系統(tǒng)中實(shí)現(xiàn)服務(wù)的快速發(fā)布方法,使得開發(fā)以及發(fā)布Web Service變得異常 簡單,開發(fā)效率大大提高,同時通過圖形化的開發(fā)以及發(fā)布方式,使得用戶對Web Service 的細(xì)節(jié)不需要太多的了解,降低了學(xué)習(xí)和維護(hù)的成本,不再需要手工為各種不同的Web Service發(fā)布系統(tǒng)編寫晦澀難懂、極易出錯的服務(wù)配置文件;運(yùn)用該系統(tǒng)可以快速、直觀的 將現(xiàn)有的業(yè)務(wù)功能發(fā)布為Web服務(wù),大大提高了應(yīng)用系統(tǒng)間的集成效率。采用了上述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法,由 于其中在開發(fā)期提供一個可視化的Web Service裝配工具,直觀形象、快捷方便的生成Web Service裝配文件;同時,在運(yùn)行期能夠根據(jù)Web Service裝配文件的定義,自動對外發(fā)布 一個新的WebService,從而達(dá)到動態(tài)、快速發(fā)布Web Service的能力,極大的提高了 SOA應(yīng) 用系統(tǒng)之間的集成效率,從而不再需要手工為各種不同的Web Service發(fā)布系統(tǒng)編寫晦澀 難懂、極易出錯的服務(wù)配置文件;同時運(yùn)用本發(fā)明的方法可以快速、直觀的將現(xiàn)有的業(yè)務(wù)功 能發(fā)布為Web服務(wù),大大提高了應(yīng)用系統(tǒng)間的集成效率,而且工作性能穩(wěn)定可靠、適用范圍 較為廣泛。在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出 各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的 而非限制性的。
權(quán)利要求
一種面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法,所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)包括圖形化服務(wù)裝配平臺和服務(wù)運(yùn)行平臺,其特征在于,所述的方法包括圖形化服務(wù)裝配處理操作和服務(wù)運(yùn)行處理操作,所述的圖形化服務(wù)裝配處理操作,包括以下步驟(11)所述的圖形化服務(wù)裝配平臺新建構(gòu)件包;(12)所述的圖形化服務(wù)裝配平臺在該新建的構(gòu)件包中創(chuàng)建裝配圖文件;(13)所述的圖形化服務(wù)裝配平臺根據(jù)用戶的操作,將現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)拖曳到裝配圖中,并在裝配圖中生成相應(yīng)的構(gòu)件;(14)所述的圖形化服務(wù)裝配平臺為所生成的該構(gòu)件添加一個或多個服務(wù),并指定服務(wù)的接口描述;(15)所述的圖形化服務(wù)裝配平臺根據(jù)需要為所述的添加的服務(wù)添加相應(yīng)的Web Service綁定;(16)所述的圖形化服務(wù)裝配平臺保存裝配圖文件,且所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)對該裝配圖文件進(jìn)行編譯和編譯檢查;所述的服務(wù)運(yùn)行處理操作,包括以下步驟(21)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包;(22)所述的服務(wù)運(yùn)行平臺查找所述的構(gòu)件包下所有的服務(wù)裝配文件;(23)所述的服務(wù)運(yùn)行平臺解析所述的服務(wù)裝配文件;(24)所述的服務(wù)運(yùn)行平臺查找該構(gòu)件包下所有的Web Service類型擴(kuò)展文件;(25)所述的服務(wù)運(yùn)行平臺解析Web Service類型擴(kuò)展文件aegis;(26)所述的服務(wù)運(yùn)行平臺根據(jù)構(gòu)件的實(shí)現(xiàn)類,生成對應(yīng)的Web Service描述文件WSDL;(27)所述的服務(wù)運(yùn)行平臺將所述的WSDL發(fā)布為Web Service,并動態(tài)生成相應(yīng)的Servlet,同時將該Servlet注冊到所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中,監(jiān)聽用戶請求;(28)所述的服務(wù)運(yùn)行平臺將用戶請求數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)數(shù)據(jù)類型;(29)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)邏輯返回?cái)?shù)據(jù)轉(zhuǎn)換為SOAP信息。
2.根據(jù)權(quán)利要求1所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方 法,其特征在于,所述的構(gòu)件包是指包含一定功能邏輯的物理單元,且每個構(gòu)件包作為一個 最小的部署單元部署到面向服務(wù)的架構(gòu)運(yùn)行系統(tǒng)環(huán)境中,構(gòu)件包下包含實(shí)現(xiàn)業(yè)務(wù)功能的所 有依賴資源。
3.根據(jù)權(quán)利要求1所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方 法,其特征在于,所述的圖形化服務(wù)裝配平臺將現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)拖曳到裝配圖中并在 裝配圖中生成相應(yīng)的構(gòu)件,包括以下步驟(131)所述的圖形化服務(wù)裝配平臺從資源管理器中拖拽現(xiàn)有業(yè)務(wù)功能的實(shí)現(xiàn)到可視化 編輯器中;(132)所述的圖形化服務(wù)裝配平臺對業(yè)務(wù)功能實(shí)現(xiàn)中的方法進(jìn)行逐一檢查,判斷該方 法的參數(shù)和返回值中是否包含有復(fù)雜數(shù)據(jù)類型;(133)如果是,則所述的圖形化服務(wù)裝配平臺彈出服務(wù)裝配向?qū)?,在向?qū)е休斎霕?gòu)件的 名稱、服務(wù)的名稱,配置復(fù)雜數(shù)據(jù)類型中存放的元素的具體類型;(134)所述的圖形化服務(wù)裝配平臺在服務(wù)裝配圖中生成相應(yīng)的構(gòu)件,該構(gòu)件中包含了 一個服務(wù)。
4.根據(jù)權(quán)利要求3所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方 法,其特征在于,所述的判斷該方法的參數(shù)和返回值中是否包含有復(fù)雜數(shù)據(jù)類型,具體為判斷該方法的參數(shù)和返回值的類型是否是List、Map或者Java Bean類型中的一種或 者多種。
5.根據(jù)權(quán)利要求1所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方 法,其特征在于,所述的對該裝配圖文件進(jìn)行編譯,具體為所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)根據(jù)裝配圖的定義,自動生成相應(yīng)的符合SCA規(guī)范的 服務(wù)裝配文件。
6.根據(jù)權(quán)利要求1所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方 法,其特征在于,所述的對該裝配圖文件進(jìn)行編譯檢查,包括以下步驟(161)所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件的實(shí)現(xiàn)是否存在;(162)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;(163)如果是,則所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件的服務(wù)接口描述是否存在;(164)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;(165)如果是,則所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)判斷構(gòu)件是否實(shí)現(xiàn)了服務(wù)接口描述 中定義的方法;(166)如果否,則該裝配圖文件中存在錯誤,提示用戶進(jìn)行修正,并結(jié)束;如果是,則直 接結(jié)束。
7.根據(jù)權(quán)利要求6所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方 法,其特征在于,所述的構(gòu)件為SCA規(guī)范中定義的、能夠復(fù)用的最小功能單位。
8.根據(jù)權(quán)利要求6所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方 法,其特征在于,所述的構(gòu)件的實(shí)現(xiàn)是指構(gòu)件的具體功能實(shí)現(xiàn)。
9.根據(jù)權(quán)利要求6所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方 法,其特征在于,所述的服務(wù)接口描述為描述服務(wù)中所包含的業(yè)務(wù)方法的文件,所述的業(yè)務(wù) 方法為發(fā)布為Web Service后該面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)對外所提供的業(yè)務(wù)方法。
10.根據(jù)權(quán)利要求1所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的 方法,其特征在于,所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包,包括以下步驟(211)所述的服務(wù)運(yùn)行平臺查找構(gòu)件包所在的根路徑,遍歷所存在的所有構(gòu)件包;(212)所述的服務(wù)運(yùn)行平臺解析構(gòu)件包的元數(shù)據(jù),元數(shù)據(jù)信息位于構(gòu)件包META-INF目 錄下的文件MANIFEST. MF ;(213)所述的服務(wù)運(yùn)行平臺按構(gòu)件包的依賴關(guān)系,對構(gòu)件包的進(jìn)行排序,以便于構(gòu)件包 的加載。
11.根據(jù)權(quán)利要求10所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的 方法,其特征在于,所述的MANIFEST. MF文件的內(nèi)容按Java中MANIFEST的定義規(guī)則進(jìn)行定 義。
12.根據(jù)權(quán)利要求10所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的3方法,其特征在于,所述的構(gòu)件包的排序規(guī)則為如果第一構(gòu)件包依賴于第二構(gòu)件包,第二構(gòu)件包依賴于第三構(gòu)件包,第四構(gòu)件包不依 賴其它構(gòu)件包,則相應(yīng)的排序列表為構(gòu)件包D、構(gòu)件包C、構(gòu)件包B、構(gòu)件包A。
13.根據(jù)權(quán)利要求10所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的 方法,其特征在于,所述的服務(wù)運(yùn)行平臺查找所述的構(gòu)件包下所有的服務(wù)裝配文件,包括以 下步驟(221)所述的服務(wù)運(yùn)行平臺對已經(jīng)排序的構(gòu)件包列表進(jìn)行遍歷;(222)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包所在路徑以及子路徑下的所有文件,查找其中 的服務(wù)裝配文件。
14.根據(jù)權(quán)利要求1所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的 方法,其特征在于,所述的服務(wù)運(yùn)行平臺解析所述的服務(wù)裝配文件,包括以下步驟(231)所述的服務(wù)運(yùn)行平臺利用XML解析器解析服務(wù)裝配文件;(232)在服務(wù)裝配文件中對于結(jié)點(diǎn)Component生成構(gòu)件的內(nèi)存模型;(233)所述的服務(wù)運(yùn)行平臺解析構(gòu)件的服務(wù),并生成服務(wù)的內(nèi)存模型;(234)所述的服務(wù)運(yùn)行平臺解析構(gòu)件的實(shí)現(xiàn),并生成實(shí)現(xiàn)的內(nèi)存模型;(235)所述的服務(wù)運(yùn)行平臺在服務(wù)中解析所添加的WebService綁定,并生成綁定的 內(nèi)存模型。
15.根據(jù)權(quán)利要求10所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布 的方法,其特征在于,所述的服務(wù)運(yùn)行平臺查找該構(gòu)件包下所有的Web Service類型擴(kuò)展文 件,包括以下步驟(241)所述的服務(wù)運(yùn)行平臺對已經(jīng)排序的構(gòu)件包列表遍歷;(242)所述的服務(wù)運(yùn)行平臺遍歷構(gòu)件包所在路徑下的所有文件,查找WebService類 型擴(kuò)展文件aegis。
16.根據(jù)權(quán)利要求15所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的 方法,其特征在于,所述的服務(wù)運(yùn)行平臺解析Web Service類型擴(kuò)展文件aegis,包括以下 步驟(251)所述的服務(wù)運(yùn)行平臺利用XML解析器解析WebService類型擴(kuò)展文件aegis ;(252)所述的服務(wù)運(yùn)行平臺遍歷該WebService類型擴(kuò)展文件aegis中所有Method結(jié) 點(diǎn),解析出方法的輸入、輸出參數(shù)的元數(shù)據(jù)信息。
17.根據(jù)權(quán)利要求15所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的 方法,其特征在于,所述的服務(wù)運(yùn)行平臺根據(jù)構(gòu)件的實(shí)現(xiàn)類生成對應(yīng)的Web Service描述文 件WSDL,包括以下步驟(261)所述的服務(wù)運(yùn)行平臺根據(jù)添加WebService綁定的服務(wù)查找對應(yīng)的構(gòu)件;(262)所述的服務(wù)運(yùn)行平臺根據(jù)構(gòu)件的元數(shù)據(jù)查找構(gòu)件的實(shí)現(xiàn)類;(263)所述的服務(wù)運(yùn)行平臺根據(jù)服務(wù)的名稱,查找服務(wù)對應(yīng)的類型擴(kuò)展aegis定義;(264)所述的服務(wù)運(yùn)行平臺根據(jù)類的定義以及類中方法元數(shù)據(jù)的定義,生成針對此類 的WSDL描述;(265)所述的服務(wù)運(yùn)行平臺建立服務(wù)名稱與服務(wù)生成WSDL的映射關(guān)系。
18.根據(jù)權(quán)利要求10所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的方法,其特征在于,所述的步驟(27)包括以下步驟(271)所述的服務(wù)運(yùn)行平臺建立Servlet的緩存ServletHost;(272)所述的服務(wù)運(yùn)行平臺新建HttpServlet,以WebService的名稱作為key放入緩 存 ServletHost 中;(273)所述的服務(wù)運(yùn)行平臺新建ServletFilter,負(fù)責(zé)服務(wù)分發(fā),并配置到應(yīng)用中;(274)所述的服務(wù)運(yùn)行平臺接收到Http請求時,根據(jù)URL從緩存ServletHost中判斷 是否已經(jīng)注冊,如果注冊則把請求交由其Servlet進(jìn)行處理,否則繼續(xù)原有操作。
19.根據(jù)權(quán)利要求10所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的 方法,其特征在于,所述的服務(wù)運(yùn)行平臺將用戶請求數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)數(shù)據(jù)類型,包括以下步 驟(281)所述的服務(wù)運(yùn)行平臺從Servlet中讀取輸入流,構(gòu)造為SOAPEnvelope ;(282)所述的服務(wù)運(yùn)行平臺從SOAPEnvelope中分離出SOAP Header和SOAP Body數(shù)據(jù);(283)所述的服務(wù)運(yùn)行平臺查找服務(wù)對應(yīng)構(gòu)件的業(yè)務(wù)實(shí)現(xiàn)類以及調(diào)用的方法;(284)所述的服務(wù)運(yùn)行平臺把SOAPBody數(shù)據(jù)轉(zhuǎn)換為業(yè)務(wù)實(shí)現(xiàn)類要求的數(shù)據(jù)類型;(285)所述的服務(wù)運(yùn)行平臺調(diào)用業(yè)務(wù)實(shí)現(xiàn)類。
20.根據(jù)權(quán)利要求10所述的面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)WebService快速發(fā)布的 方法,其特征在于,所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)邏輯返回?cái)?shù)據(jù)轉(zhuǎn)換為SOAP信息,包括以下 步驟(291)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)返回?cái)?shù)據(jù)按WSDL的要求進(jìn)行序列化;(292)所述的服務(wù)運(yùn)行平臺生成構(gòu)件SOAPEnvelope ;(293)所述的服務(wù)運(yùn)行平臺將業(yè)務(wù)數(shù)據(jù)序列化的結(jié)果添加到SOAPEnvelope的Body當(dāng)中;(294)所述的服務(wù)運(yùn)行平臺生成Servlet中的輸出流;(295)所述的服務(wù)運(yùn)行平臺將SOAPEnvelope按byte數(shù)組的方式寫到Servlet中輸出 流當(dāng)中。
全文摘要
本發(fā)明涉及一種面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法,其中包括圖形化服務(wù)裝配平臺和服務(wù)運(yùn)行平臺,該方法包括圖形化服務(wù)裝配處理操作和服務(wù)運(yùn)行處理操作,圖形化服務(wù)裝配處理操作完成圖形化裝配、編譯、編譯檢查和快速創(chuàng)建一個新的構(gòu)件實(shí)現(xiàn);服務(wù)運(yùn)行處理操作完成服務(wù)裝配文件的加載、服務(wù)的動態(tài)注冊、WSDL文件的自動生成以及監(jiān)聽用戶的請求。采用該種面向服務(wù)的架構(gòu)應(yīng)用系統(tǒng)中實(shí)現(xiàn)Web Service快速發(fā)布的方法,極大的提高了SOA應(yīng)用系統(tǒng)之間的集成效率,同時運(yùn)用本發(fā)明的方法可以快速、直觀的將現(xiàn)有的業(yè)務(wù)功能發(fā)布為Web服務(wù),大大提高了應(yīng)用系統(tǒng)間的集成效率,而且工作性能穩(wěn)定可靠、適用范圍較為廣泛。
文檔編號H04L29/08GK101957758SQ20101050736
公開日2011年1月26日 申請日期2010年10月14日 優(yōu)先權(quán)日2010年10月14日
發(fā)明者王 鋒, 陳學(xué)平 申請人:上海普元信息技術(shù)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1