專利名稱:一種通信協(xié)議適配方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信協(xié)議轉(zhuǎn)換領(lǐng)域,更具體的說,涉及基于Java字節(jié)碼的通信協(xié)議適配框架,可以簡稱為Class適配器。
背景技術(shù):
隨著企業(yè)應(yīng)用程序的復(fù)雜性不斷加劇,XML文檔的約束和規(guī)則變得越來越嚴(yán)格。此外,隨著業(yè)界越來越迅速地采用Web服務(wù),XML開始成為跨越多種平臺(tái)的不可忽視的重要角色。所有這一切意味著,應(yīng)用程序迫切需要一種簡單而強(qiáng)大的機(jī)制來處理XML。世面上流行很多開源產(chǎn)品,例如XMLBeans用于XML與JAVA Bean的綁定,XSLT用于通訊協(xié)議報(bào)文格式之間的適配,DOM用于對(duì)XML報(bào)文的處理。目前通訊協(xié)議適配領(lǐng)域的現(xiàn)狀是,在開發(fā)系統(tǒng)平臺(tái)之間實(shí)現(xiàn)通訊協(xié)議的適配時(shí)采用主流的是XSLT開源產(chǎn)品者居多。在實(shí)際生產(chǎn)中,單獨(dú)或組合使用以上的開源產(chǎn)品,由于開源產(chǎn)品追求通用性,其大量使用反射,效率并不是很高。XSLT產(chǎn)品在生產(chǎn)中存在以下特征(I)使用XSLT進(jìn)行協(xié)議轉(zhuǎn)換,需要較長一段時(shí)間學(xué)習(xí)其腳本語言XSL和XPATH,每門腳本語言都可以寫一本書,這對(duì)于使用人員要求具備較強(qiáng)的開發(fā)及學(xué)習(xí)能力;(2)對(duì)于結(jié)構(gòu)復(fù)雜的XML報(bào)文,編寫XSL和 XPATH腳本進(jìn)行協(xié)議報(bào)文適配相當(dāng)復(fù)雜,平均編寫一個(gè)復(fù)雜的轉(zhuǎn)換報(bào)文配置需要2小時(shí)以上,在生產(chǎn)中對(duì)于復(fù)雜的XML報(bào)文要么采用透?jìng)鞣绞剑匆笸鈬脚_(tái)簡化報(bào)文復(fù)雜度;
(3)XSLT開源組織提供內(nèi)置函數(shù),以便報(bào)文轉(zhuǎn)換支持特殊功能處理,但實(shí)際需求開發(fā)中,這些內(nèi)置函數(shù)不能滿足所有實(shí)際生產(chǎn)中的功能,同時(shí)也不支持?jǐn)U展性。使用D0M4j產(chǎn)品解決不了不同協(xié)議報(bào)文之間的格式轉(zhuǎn)換,同時(shí)DOM在內(nèi)存生成整個(gè)文檔的樹,如果文檔非常大, DOM就會(huì)變得對(duì)內(nèi)存非常敏感,并會(huì)顯著降低性能。JAXB、Castor、XMLBeans支持XML/Java 綁定技術(shù),但使用時(shí)需要根據(jù)XML報(bào)文編寫相應(yīng)的java文件,將XML報(bào)文信息注入到j(luò)ava 對(duì)象中,同時(shí)編寫java代碼也要花費(fèi)不少的功夫,而且需求越多,越讓人感到麻煩。如上所述,在實(shí)際工作生產(chǎn)中發(fā)現(xiàn)XSLT、XMLBeans等開源產(chǎn)品對(duì)報(bào)文協(xié)議適配的配置及測(cè)試工作存在生產(chǎn)效率低下的情況,因此需要設(shè)計(jì)并編碼實(shí)現(xiàn)一套基于定義XML配置模板的協(xié)議適配系統(tǒng),從而提高員工生產(chǎn)效率、優(yōu)化系統(tǒng)性能以及避免相關(guān)人員在工作前需要學(xué)習(xí)繁雜的腳本語言,將復(fù)雜的報(bào)文適配使用傻瓜型配置系統(tǒng)予以實(shí)現(xiàn),提高生產(chǎn)效率。
發(fā)明內(nèi)容
本發(fā)明適用于各類通訊協(xié)議報(bào)文(HTTP協(xié)議、SOAP協(xié)議、MML協(xié)議、UTYPE協(xié)議), 實(shí)現(xiàn)通訊協(xié)議報(bào)文之間相互轉(zhuǎn)換的功能,替換現(xiàn)有主流協(xié)議轉(zhuǎn)換的XSLT開源產(chǎn)品。本發(fā)明主要采用以下技術(shù)方案來解決本發(fā)明提供一種通信協(xié)議適配方法,其使用工作流以及IOC思想,組件調(diào)度控制器按各請(qǐng)求的類型,調(diào)度相應(yīng)組件進(jìn)行協(xié)議解析;其中所述調(diào)度通過配置文件設(shè)置,其整合相關(guān)組件,按責(zé)任鏈模式,逐一調(diào)度用于解析適配協(xié)議的各個(gè)組件,組件進(jìn)行協(xié)議解析適配
4則通過XML配置模板實(shí)現(xiàn),通過制定的XML配置模板自動(dòng)生成class文件,在進(jìn)行通信協(xié)議適配時(shí)將這些生成的class文件實(shí)例化成對(duì)象,把外圍平臺(tái)的協(xié)議動(dòng)態(tài)注入到各對(duì)象的各個(gè)屬性,并將這些存有數(shù)據(jù)的對(duì)象進(jìn)行裝配生成XML協(xié)議的報(bào)文。進(jìn)一步,所述組件包括XML配置模板自動(dòng)生成組件、MML協(xié)議解析組件、HTTP協(xié)議解析組件、配置緩存組件以及協(xié)議類型驗(yàn)證組件,其中所述協(xié)議類型驗(yàn)證組件用于對(duì)外部數(shù)據(jù)的類型進(jìn)行驗(yàn)證,所述配置緩存組件能夠緩存解析的XML配置模板的相關(guān)信息,所述 MML協(xié)議解析組件用于將MML報(bào)文轉(zhuǎn)換為XML報(bào)文,所述HTTP協(xié)議解析組件用于將XML報(bào)文轉(zhuǎn)換為MML報(bào)文。進(jìn)一步,所述協(xié)議類型驗(yàn)證組件能夠識(shí)別MML協(xié)議、HTTP協(xié)議以及SOAP協(xié)議。本發(fā)明還提供一種通信協(xié)議適配方法,包括以下步驟I)讀取系統(tǒng)配置文件,加載上下文信息;2)實(shí)時(shí)監(jiān)聽外圍平臺(tái)發(fā)送到協(xié)議接口隊(duì)列上的報(bào)文信息,并接收?qǐng)?bào)文信息;3)識(shí)別外圍平臺(tái)發(fā)送的報(bào)文類型,并根據(jù)交易編碼選擇相應(yīng)的XML配置模板,其中該交易編碼用于標(biāo)識(shí)唯一一筆業(yè)務(wù)或交易;4)解析XML配置模板相關(guān)信息,并使用配置緩存組件對(duì)其相關(guān)信息進(jìn)行緩存;5)結(jié)合所述緩存的信息、所述XML配置模板以及各節(jié)點(diǎn)功能的代碼生成規(guī)則,使用java字節(jié)碼技術(shù)生成相應(yīng)的class文件;6)轉(zhuǎn)譯協(xié)議報(bào)文,使用HTTP協(xié)議解析器、MML協(xié)議解析器兩類協(xié)議解析器;7)將轉(zhuǎn)換后的報(bào)文發(fā)送給外圍平臺(tái),以完成所有轉(zhuǎn)換工作。其中步驟2中接收的報(bào)文信息至少包含MML協(xié)議、SOAP協(xié)議、HTTP協(xié)議中的一種; 步驟3中所述XML配置模板中有標(biāo)識(shí)XML報(bào)文的標(biāo)簽,用于說明XML報(bào)文的結(jié)構(gòu)。本發(fā)明還提供一種通信協(xié)議適配系統(tǒng),該系統(tǒng)包括通訊協(xié)議適配器,用于讀取系統(tǒng)配置文件,加載上下文信息;實(shí)時(shí)監(jiān)聽模塊,實(shí)時(shí)監(jiān)聽外圍平臺(tái)發(fā)送到協(xié)議接口隊(duì)列上的報(bào)文信息,并接收?qǐng)?bào)文信息;報(bào)文類型識(shí)別模塊,用于識(shí)別外圍平臺(tái)發(fā)送的報(bào)文類型,并根據(jù)交易編碼選擇相應(yīng)的XML配置模板,其中該交易編碼用于標(biāo)識(shí)唯一一筆業(yè)務(wù)或交易;解析模塊,用于解析XML配置模板相關(guān)信息,并使用配置緩存組件對(duì)其相關(guān)信息進(jìn)行緩存;文件生成模塊,用于結(jié)合所述緩存的信息、所述XML配置模板以及各節(jié)點(diǎn)功能的代碼生成規(guī)則,使用java字節(jié)碼技術(shù)生成相應(yīng)的class文件;協(xié)議報(bào)文轉(zhuǎn)譯模塊,使用HTTP協(xié)議解析器、MML協(xié)議解析器兩類協(xié)議解析器;發(fā)送模塊,用于將轉(zhuǎn)換后的報(bào)文發(fā)送給外圍平臺(tái),以完成所有轉(zhuǎn)換工作。其中,實(shí)時(shí)監(jiān)聽模塊接收的報(bào)文信息至少包含MML協(xié)議、SOAP協(xié)議、HTTP協(xié)議中的一種;所述XML配置模板中有標(biāo)識(shí)XML報(bào)文的標(biāo)簽,用于說明XML報(bào)文的結(jié)構(gòu)。本發(fā)明的各功能點(diǎn)在設(shè)計(jì)思考上均較為完善,借鑒了 Velocity、IOC、ORM、MOCK、 SOA、規(guī)則引擎等思想(不依賴開源產(chǎn)品,只借鑒思想予以實(shí)現(xiàn)),使用各類設(shè)計(jì)模式,較好地保證了系統(tǒng)的松耦合、功能的可復(fù)用以及優(yōu)良的擴(kuò)展性。本發(fā)明不依賴任何開源產(chǎn)品,所有功能硬編碼實(shí)現(xiàn),從而避免了各種開源產(chǎn)品的組合使用導(dǎo)致系統(tǒng)效率低下,使用java字節(jié)碼自動(dòng)生成代碼后,JVM動(dòng)態(tài)加載生成的class文件,避免了反射產(chǎn)生的性能影響,各功能點(diǎn)自己實(shí)現(xiàn),可以根據(jù)需求最大程度的優(yōu)化業(yè)務(wù)邏輯。因此大幅提升協(xié)議報(bào)文適配的處理時(shí)間。綜上所述,上述通訊協(xié)議適配系統(tǒng)和方法降低了人工操作,提高了日常開發(fā)的生產(chǎn)效率,提高了系統(tǒng)性能,增強(qiáng)了功能擴(kuò)展性,并且為實(shí)現(xiàn)通訊協(xié)議自動(dòng)化適配做好基礎(chǔ)架構(gòu),可以在所述基于java字節(jié)碼的通訊協(xié)議適配系統(tǒng)和方法的基礎(chǔ)上,開發(fā)出基于數(shù)據(jù)挖掘的通訊協(xié)議適配,實(shí)現(xiàn)不同格式的報(bào)文適配已不需要人工編寫配置腳本,由外圍平臺(tái)發(fā)送測(cè)試報(bào)文驅(qū)動(dòng)協(xié)議自動(dòng)化轉(zhuǎn)換,使該產(chǎn)品升級(jí)為智能系統(tǒng)。
圖I為本發(fā)明提供的組件調(diào)度控制關(guān)系圖。圖2為本發(fā)明提供的通訊協(xié)議報(bào)文適配系統(tǒng)的處理流程圖。圖3為本發(fā)明提供的一實(shí)施例的示意圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。圖I為本發(fā)明提供的組件調(diào)度控制關(guān)系圖。使用工作流以及IOC思想,組件調(diào)度控制器按各請(qǐng)求類型,調(diào)度相應(yīng)組件進(jìn)行協(xié)議解析。所有的組件初始化和調(diào)用都由容器負(fù)責(zé),組件處在一個(gè)容器當(dāng)中,由容器負(fù)責(zé)管理。組件可以動(dòng)態(tài)地掛接在組件調(diào)度控制器上,并根據(jù)協(xié)議類型,與組件的msgtype屬性相匹配的組件將參與協(xié)議解析。各組件的transfer屬性用于消息向后傳遞。組件調(diào)度控制器的調(diào)度工作通過配置文件設(shè)置,其整合相關(guān)組件,按責(zé)任鏈模式逐一調(diào)度解析適配協(xié)議的各個(gè)組件。簡單說,就是由容器控制程序之間的關(guān)系,而非傳統(tǒng)實(shí)現(xiàn)中,由程序代碼直接操控。組件進(jìn)行協(xié)議解析適配通過XML配置模板實(shí)現(xiàn),可以自由加入組件并定義組件在協(xié)議解析中的執(zhí)行順序。同時(shí),一個(gè)組件可以參與多種協(xié)議的解析。下面給出了配置文件的片斷進(jìn)行舉例說明I)組件調(diào)度流程控制模塊配置屬性名chainBeanDefinition的 protocolTypeValidate> httpParser、mmlParser 對(duì)應(yīng)各組件配置,其中組件 protocolTypeValidate為協(xié)議類型驗(yàn)證組件,組件httpParser為HTTP協(xié)議解析組件,組件mmlParser為MML協(xié)議解析組件,并說明這些組件參與協(xié)議適配,即組件 chainBeanDefinition 依次調(diào)用組件 protocolTypeValidate、httpParser、mmlParser。各組件的配置如下框圖〈wscomponent name=〃fiIterChainProxy^
class二〃org. sitech. com. chain. FilterChainProxy^)
〈property name=〃chainBeanDefinition〃
vaJ_ue=〃protoco_LTypeVa_Lidate,httpParser, mmJ_Parser〃>
</property>
〈property name=〃isOrder〃 value=〃true〃X/property>
〈/wscomponent〉2)協(xié)議類型驗(yàn)證組件對(duì)外部數(shù)據(jù)的類型進(jìn)行驗(yàn)證,可識(shí)別MML協(xié)議、HTTP協(xié)議、 SOAP協(xié)議。msgtype屬性標(biāo)識(shí)參與何種類型報(bào)文的解析,由組件調(diào)度控制器負(fù)責(zé)處理。例如,msgtype定義為I的組件進(jìn)行HTTP協(xié)議、SOAP協(xié)議的解析;msgtype定義為2組件進(jìn)行 MML協(xié)議的解析;mSgtype定義為11 2,將參與HTTP協(xié)議、SOAP協(xié)議以及MML協(xié)議的解析。 order屬性標(biāo)識(shí)解析報(bào)文時(shí)各組件執(zhí)行的順序。
〈wscomponcnt namc=〃protocoITypcValidatc〃class=〃org. sitech. com. pojo. impI. ProtocolTypeValidate,)<property name::〃msgLype〃 value二〃I 2//></property>〈property name==〃order〃 value=〃l〃>〈/property>〈property name==〃transfer〃X/property>〈/wscomponent〉3) MML協(xié)議解析組件用于將MML報(bào)文轉(zhuǎn)換為XML報(bào)文。
〈wscomponent name=〃mmlParser〃
class=〃org. sitech. com. pojo. impI. MMLProtocolParser〃> 〈property name=//msgtype^ value=^! | 2^></property>
〈property name=〃order〃 value=〃3〃X/property>〈property name=〃transfer〃X/property></wscomponent>4)HTTP協(xié)議解析組件用于將XML報(bào)文轉(zhuǎn)換為MML報(bào)文。
權(quán)利要求
1.一種通信協(xié)議適配方法,其使用工作流以及IOC思想,組件調(diào)度控制器按各請(qǐng)求的類型,調(diào)度相應(yīng)組件進(jìn)行協(xié)議解析;其中所述調(diào)度通過配置文件設(shè)置,其整合相關(guān)組件,按責(zé)任鏈模式,逐一調(diào)度用于解析適配協(xié)議的各個(gè)組件,組件進(jìn)行協(xié)議解析適配則通過XML 配置模板實(shí)現(xiàn),通過制定的XML配置模板自動(dòng)生成class文件,在進(jìn)行通信協(xié)議適配時(shí)將這些生成的class文件實(shí)例化成對(duì)象,把外圍平臺(tái)的協(xié)議動(dòng)態(tài)注入到各對(duì)象的各個(gè)屬性,并將這些存有數(shù)據(jù)的對(duì)象進(jìn)行裝配生成XML協(xié)議的報(bào)文。
2.如權(quán)利要求I所述的通信協(xié)議適配方法,所述組件包括XML配置模板自動(dòng)生成組件、MML協(xié)議解析組件、HTTP協(xié)議解析組件、配置緩存組件以及協(xié)議類型驗(yàn)證組件,其中所述協(xié)議類型驗(yàn)證組件用于對(duì)外部數(shù)據(jù)的類型進(jìn)行驗(yàn)證,所述配置緩存組件能夠緩存解析的 XML配置模板的相關(guān)信息,所述MML協(xié)議解析組件用于將MML報(bào)文轉(zhuǎn)換為XML報(bào)文,所述 HTTP協(xié)議解析組件用于將XML報(bào)文轉(zhuǎn)換為MML報(bào)文。
3.如權(quán)利要求2所述的通信協(xié)議適配方法,所述協(xié)議類型驗(yàn)證組件能夠識(shí)別MML協(xié)議、HTTP協(xié)議以及SOAP協(xié)議。
4.一種通信協(xié)議適配方法,包括以下步驟1)讀取系統(tǒng)配置文件,加載上下文信息;2)實(shí)時(shí)監(jiān)聽外圍平臺(tái)發(fā)送到協(xié)議接口隊(duì)列上的報(bào)文信息,并接收?qǐng)?bào)文信息;3)識(shí)別外圍平臺(tái)發(fā)送的報(bào)文類型,并根據(jù)交易編碼選擇相應(yīng)的XML配置模板,其中該交易編碼用于標(biāo)識(shí)唯一一筆業(yè)務(wù)或交易;4)解析XML配置模板相關(guān)信息,并使用配置緩存組件對(duì)其相關(guān)信息進(jìn)行緩存;5)結(jié)合所述緩存的信息、所述XML配置模板以及各節(jié)點(diǎn)功能的代碼生成規(guī)則,使用 java字節(jié)碼技術(shù)生成相應(yīng)的class文件;6)轉(zhuǎn)譯協(xié)議報(bào)文,使用HTTP協(xié)議解析器、MML協(xié)議解析器兩類協(xié)議解析器;7)將轉(zhuǎn)換后的報(bào)文發(fā)送給外圍平臺(tái),以完成所有轉(zhuǎn)換工作。
5.如權(quán)利要求4所述的方法,其中步驟2中接收的報(bào)文信息至少包含MML協(xié)議、SOAP 協(xié)議、HTTP協(xié)議中的一種。
6.如權(quán)利要求4所述的方法,其中步驟3中所述XML配置模板中有標(biāo)識(shí)XML報(bào)文的標(biāo)簽,用于說明XML報(bào)文的結(jié)構(gòu)。
7.一種通信協(xié)議適配系統(tǒng),該系統(tǒng)包括通訊協(xié)議適配器,用于讀取系統(tǒng)配置文件,加載上下文信息;實(shí)時(shí)監(jiān)聽模塊,實(shí)時(shí)監(jiān)聽外圍平臺(tái)發(fā)送到協(xié)議接口隊(duì)列上的報(bào)文信息,并接收?qǐng)?bào)文信報(bào)文類型識(shí)別模塊,用于識(shí)別外圍平臺(tái)發(fā)送的報(bào)文類型,并根據(jù)交易編碼選擇相應(yīng)的 XML配置模板,其中該交易編碼用于標(biāo)識(shí)唯一一筆業(yè)務(wù)或交易;解析模塊,用于解析XML配置模板相關(guān)信息,并使用配置緩存組件對(duì)其相關(guān)信息進(jìn)行緩存;文件生成模塊,用于結(jié)合所述緩存的信息、所述XML配置模板以及各節(jié)點(diǎn)功能的代碼生成規(guī)則,使用java字節(jié)碼技術(shù)生成相應(yīng)的class文件;協(xié)議報(bào)文轉(zhuǎn)譯模塊,使用HTTP協(xié)議解析器、MML協(xié)議解析器兩類協(xié)議解析器;發(fā)送模塊,用于將轉(zhuǎn)換后的報(bào)文發(fā)送給外圍平臺(tái),以完成所有轉(zhuǎn)換工作。
8.如權(quán)利要求7所述的方法,其中實(shí)時(shí)監(jiān)聽模塊接收的報(bào)文信息至少包含MML協(xié)議、 SOAP協(xié)議、HTTP協(xié)議中的一種。
9.如權(quán)利要求7所述的方法,其中所述XML配置模板中有標(biāo)識(shí)XML報(bào)文的標(biāo)簽,用于說明XML報(bào)文的結(jié)構(gòu)。
全文摘要
本發(fā)明提供一種通信協(xié)議適配方法及系統(tǒng),其使用工作流以及IOC思想,組件調(diào)度控制器按各請(qǐng)求的類型,調(diào)度相應(yīng)組件進(jìn)行協(xié)議解析;其中所述調(diào)度通過配置文件設(shè)置,其整合相關(guān)組件,按責(zé)任鏈模式,逐一調(diào)度用于解析適配協(xié)議的各個(gè)組件,組件調(diào)度通過XML配置模板實(shí)現(xiàn),通過制定的XML配置模板自動(dòng)生成class文件,在進(jìn)行通信協(xié)議適配時(shí)將這些生成的class文件實(shí)例化成對(duì)象,把外圍平臺(tái)的協(xié)議動(dòng)態(tài)注入到各對(duì)象的各個(gè)屬性,并將這些存有數(shù)據(jù)的對(duì)象進(jìn)行裝配生成XML協(xié)議的報(bào)文。本發(fā)明降低了人工操作,提高了日常開發(fā)的生產(chǎn)效率,提高了系統(tǒng)性能,增強(qiáng)了功能擴(kuò)展性,并且為實(shí)現(xiàn)通訊協(xié)議自動(dòng)化適配做好基礎(chǔ)架構(gòu)。
文檔編號(hào)H04L29/06GK102594833SQ20121006231
公開日2012年7月18日 申請(qǐng)日期2012年3月9日 優(yōu)先權(quán)日2012年3月9日
發(fā)明者張厚瑞 申請(qǐng)人:北京神州數(shù)碼思特奇信息技術(shù)股份有限公司