專利名稱:Tuxedo數(shù)據(jù)協(xié)議轉(zhuǎn)換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)轉(zhuǎn)換方法,尤其涉及一種TUXEDO (Transaction forUNIX has been Extended for Distributed Operation,被分布式操作擴展之后的UNIX事務(wù)系統(tǒng)) 數(shù)據(jù)協(xié)議轉(zhuǎn)換方法。
背景技術(shù):
隨著訪問終端類型的越來越多樣化,訪問頻率越來越頻繁,對后臺架構(gòu)靈活性和高性能都帶來新挑戰(zhàn)。為提高跨平臺操作和高性能,后臺選用中間件服務(wù)器成了一種趨勢,中間件TUXEDO被越來越多的采用。TUXEDO后臺采用獨有的FML (Field Manipulation Language)處理請求端和服務(wù)器端的數(shù)據(jù)傳遞,而前端一般采用JSON(JavaScript Object Notation)或XML (ExtensibleMarkup Language可擴展標(biāo)志語言)存儲頁面數(shù)據(jù),如何快速將頁面數(shù)據(jù)轉(zhuǎn)換成FML格式成為這種架構(gòu)下應(yīng)用開發(fā)要解決的問題?,F(xiàn)有技術(shù)并不能將上述三種數(shù)據(jù)協(xié)議進行直接轉(zhuǎn)換?,F(xiàn)有主要是采用針對某一種數(shù)據(jù)協(xié)議進行解析的相關(guān)技術(shù),如針對XML協(xié)議解析的Xerces-C協(xié)議解析包、針對于 JSON 的 JSON-c 解析包、以及 TUXEDO 自身提供的 FML32 (FieldManipulation Language 32 Bit Version)數(shù)據(jù)操作的應(yīng)用程序編程接口 ;XML即可擴展標(biāo)記語言,它與HTML—樣,都是 SGML (Standard Generalized MarkupLanguage,標(biāo)準(zhǔn)通用標(biāo)記語言)。XML是因特網(wǎng)環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。擴展標(biāo)記語言XML 是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。JSON是一種輕量級的數(shù)據(jù)交換格式,它基于Javakript (Standard ECMA-262 3rd Edition-December 1999)的一個子集。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C,C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。 FML32 (Field Manipulation Language 32 Bit Version)是目前使用最為廣泛的 tuxedo 中間件內(nèi)部數(shù)據(jù)格式,其優(yōu)點在于結(jié)點插入查詢速度快,操作簡單,內(nèi)存使用率高,數(shù)據(jù)表現(xiàn)緊湊,是目前各種行業(yè)應(yīng)用系統(tǒng)運用最多的一種數(shù)據(jù)結(jié)構(gòu)。按照現(xiàn)有的技術(shù),要實現(xiàn)上述三種協(xié)議之間的相互轉(zhuǎn)換,需要首先將某種協(xié)議按照第三提供的軟件包進行協(xié)議解析;然后才能轉(zhuǎn)換到另外一種數(shù)據(jù)協(xié)議格式。如從XML到 FML32的數(shù)據(jù)協(xié)議的轉(zhuǎn)換,需要先用Xerces-C對XML報文進行協(xié)議解析形成DOM(Document Object Model文檔對象模型)樹;然后對DOM樹進行遍歷才能轉(zhuǎn)換成FML32數(shù)據(jù)協(xié)議格式。 這樣最少需要進行2次報文循環(huán)。第一次對XML報文進行解析,第二次才是進行真正的數(shù)據(jù)協(xié)議個數(shù)轉(zhuǎn)換,效率上也就打了很大的折扣;同時,對于開發(fā)人員也提出了更高的要求, 即需要了解ferces-C軟件包的使用方式以及DOM樹的操作方式,同時也需要了解FML32數(shù)據(jù)協(xié)議格式的操作方式,不利于快速開發(fā)應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,提高xml/json到fml32、 fml32到xml/json之間數(shù)據(jù)格式轉(zhuǎn)換的效率,實現(xiàn)協(xié)議轉(zhuǎn)換時的內(nèi)存塊直接操作,從而有效的較少了協(xié)議解析時頻繁的內(nèi)存申請與釋放的操作。為了實現(xiàn)上述目的,本發(fā)明提供一種TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其包括如下步驟步驟1、初始化數(shù)據(jù)協(xié)議轉(zhuǎn)換運行所需的上下文,其包括由用于配置數(shù)據(jù)存放路徑的元數(shù)據(jù)來定義的協(xié)議報文模板加載到內(nèi)存中形成哈希表、根據(jù)外部配置獲取協(xié)議報文的字符集定義、及初始化數(shù)據(jù)協(xié)議轉(zhuǎn)換所需的棧結(jié)構(gòu);步驟2、接收外部傳入的報文字符流;步驟3、判斷傳入的報文字符流是否需要進行字符集轉(zhuǎn)換,如需要則進行轉(zhuǎn)換,獲取報文的長度,并在一 FML32緩沖區(qū)中分配相應(yīng)的內(nèi)存塊;步驟4、對報文進行解析并將報文節(jié)點壓入FML32緩沖區(qū);步驟5、查詢元數(shù)據(jù),獲取當(dāng)前報文所依賴協(xié)議報文模板,通過循環(huán)報文模板以對 FML32緩沖區(qū)的數(shù)據(jù)流進行解析并生成報文,返回協(xié)議轉(zhuǎn)換后的報文。所述步驟3中,所分配內(nèi)存塊的大小為字符流長度的1. 5倍。所述步驟4包括步驟4. 1、將棧結(jié)構(gòu)的首指針回歸到初始位置;步驟4. 2、將轉(zhuǎn)換狀態(tài)回歸到初始化狀態(tài);步驟4. 3、開始循環(huán)傳入的報文字符流,對每個節(jié)點逐個進行處理,并按照節(jié)點對應(yīng)的數(shù)據(jù)類型以及按照其在報文中相對位置將節(jié)點壓入FML32緩沖區(qū)中;步驟4. 4、當(dāng)棧指針回歸到棧頂位置并且轉(zhuǎn)換狀態(tài)為成功的時候,完成協(xié)議轉(zhuǎn)換。所述步驟4中,對于元素類報文結(jié)點進行棧壓入操作,對于文本類的報文結(jié)點直接進行數(shù)據(jù)格式轉(zhuǎn)換后進行出棧操作,直到整個報文循環(huán)完畢。所述步驟5包括步驟5. 1、判斷預(yù)開辟的內(nèi)存塊的大小是否滿足本次轉(zhuǎn)換的需求,本次轉(zhuǎn)換的內(nèi)存大小需求根據(jù)傳入的字符流長度乘以1. 5所得;步驟5. 2、查詢元數(shù)據(jù), 獲得當(dāng)前報文所依賴的報文模板;步驟5. 3、將棧結(jié)構(gòu)的首指針回歸到棧頂位置;步驟5. 4、 將轉(zhuǎn)換狀態(tài)回歸到初始化狀態(tài);步驟5. 5、循環(huán)步驟5. 2中獲得的報文模板,按照報文模板中節(jié)點據(jù)類型以及節(jié)點在報文模板中的位置在FML32緩沖區(qū)中獲取當(dāng)前結(jié)點對應(yīng)的實際數(shù)據(jù)與結(jié)點名稱,并將其寫入到輸出緩沖區(qū)中;步驟5. 6、判斷棧指針是否到棧頂并且轉(zhuǎn)換狀態(tài)是否為初始化狀態(tài),如果是,則轉(zhuǎn)換成功;步驟5. 7、返回轉(zhuǎn)換后得到的報文。所述步驟5. 2中,當(dāng)模板項標(biāo)志為數(shù)組項時,按數(shù)組方式寫輸出緩沖區(qū)。所述步驟1中,所述上下文還包括判斷是否支持多線程操作、及預(yù)開辟的轉(zhuǎn)換時所需內(nèi)存塊的大小。所述報文為JSON或XML報文。本發(fā)明的有益效果1).實現(xiàn)了 XML到FML32、JSON到FML32之間的直接協(xié)議轉(zhuǎn)換, 大大的提高了協(xié)議轉(zhuǎn)換的效率,按照當(dāng)前的測試結(jié)果,比采用傳統(tǒng)的單獨解析技術(shù),效率提高了 3倍;2).實現(xiàn)了數(shù)據(jù)協(xié)議的直接轉(zhuǎn)換功能后,開發(fā)人員對頁面表單、傳輸數(shù)據(jù)、后臺處理邏輯等可以直接通過這些API實現(xiàn)轉(zhuǎn)換,減輕了開發(fā)人員的負擔(dān),讓應(yīng)用開發(fā)人員能夠更好更快的實現(xiàn)自己的應(yīng)用;
3).由于采用的是直接轉(zhuǎn)換,協(xié)議轉(zhuǎn)換的輸入輸出都是連續(xù)內(nèi)存塊,提高了轉(zhuǎn)換效率并有利于網(wǎng)絡(luò)數(shù)據(jù)的傳輸;4).采用元數(shù)據(jù)技術(shù),解決了 XML、FML與JSON數(shù)組的兼容性問題。為了能更進一步了解本發(fā)明的特征以及技術(shù)內(nèi)容,請參閱以下有關(guān)本發(fā)明的詳細說明與附圖,然而附圖僅提供參考與說明用,并非用來對本發(fā)明加以限制。
下面結(jié)合附圖,通過對本發(fā)明的具體實施方式
詳細描述,將使本發(fā)明的技術(shù)方案及其它有益效果顯而易見。附圖中,圖1為本發(fā)明TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法的流程示意圖;圖2為本發(fā)明TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法的轉(zhuǎn)換流程原理圖。
具體實施例方式為更進一步闡述本發(fā)明所采取的技術(shù)手段及其效果,以下結(jié)合本發(fā)明的優(yōu)選實施例及其附圖進行詳細描述。如圖1-2所示,本發(fā)明提供一種TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其包括如下步驟步驟1、初始化數(shù)據(jù)協(xié)議轉(zhuǎn)換運行所需的上下文,其包括由用于配置數(shù)據(jù)存放路徑的元數(shù)據(jù)來定義的報文模板加載到內(nèi)存中形成哈希表、根據(jù)外部配置獲取協(xié)議報文的字符集定義、及初始化協(xié)議轉(zhuǎn)換所需的棧結(jié)構(gòu);步驟1中首先將報文模板加載到內(nèi)存中形成哈希表,實現(xiàn)協(xié)議模塊的的快速定位查詢。同時根據(jù)外部配置獲取協(xié)議傳輸報文的字符集定義,以實現(xiàn)在協(xié)議轉(zhuǎn)換前進行內(nèi)外部字符集的轉(zhuǎn)換。具體的,該上下文包括1)、元數(shù)據(jù)配置數(shù)據(jù)存放的路徑,協(xié)議模板預(yù)加載到內(nèi)存并形成一張哈希表以供查詢使用;幻、字符集要求,包括傳入報文的字符集定義以及本地報文的字符集定義信息;3)、是否支持多線程操作;4)、預(yù)開辟的轉(zhuǎn)換時所需內(nèi)存塊的大小,如果在轉(zhuǎn)換過程中該預(yù)開辟的內(nèi)存塊不能滿足要求,將適時擴充該內(nèi)存塊。在該模塊的整個聲明周期(該模塊的聲明周期為進程啟動到停止),該內(nèi)存塊不會被釋放。如果需要支持多線程運行,該內(nèi)存塊會與線程進行綁定;5)、 初始化協(xié)議轉(zhuǎn)換所需的棧結(jié)構(gòu)。步驟2、接收外部傳入的報文字符流。步驟3、判斷傳入的報文字符流是否需要進行字符集轉(zhuǎn)換,如需要則進行轉(zhuǎn)換,獲取報文的長度,并在一 FML32緩沖區(qū)中分配相應(yīng)的內(nèi)存塊;所述步驟3中,所分配內(nèi)存的大小為字符流長度的1.5倍。步驟4、對報文進行解析并將報文節(jié)點壓入FML32緩沖區(qū);所述步驟4包括步驟4. 1、將棧結(jié)構(gòu)的首指針回歸到初始位置;步驟4. 2、將轉(zhuǎn)換狀態(tài)回歸到初始化狀態(tài);步驟 4. 3、開始循環(huán)傳入的報文字符流,對每個節(jié)點逐個進行處理,并按照節(jié)點對應(yīng)的數(shù)據(jù)類型以及按照其在報文中相對位置將節(jié)點壓入FML32緩沖區(qū)中;步驟4. 4、當(dāng)棧指針回歸到棧頂位置并且轉(zhuǎn)換狀態(tài)為成功的時候,完成協(xié)議轉(zhuǎn)換。所述步驟4中,對于元素類報文結(jié)點進行棧壓入操作,對于文本類的報文結(jié)點,直接進行數(shù)據(jù)格式轉(zhuǎn)換后進行出棧操作,直到整個報文循環(huán)完畢。對于元素類報文結(jié)點進行棧壓入操作,對于文本類的報文結(jié)點(即實際存儲數(shù)據(jù)的結(jié)點)直接進行數(shù)據(jù)格式轉(zhuǎn)換后進行出棧操作,直到整個報文循環(huán)完畢。步驟5、查詢元數(shù)據(jù),獲取當(dāng)前報文所依賴報文模板,通過循環(huán)報文模板以對 FML32緩沖區(qū)的數(shù)據(jù)流進行解析并生成報文,返回協(xié)議轉(zhuǎn)換后的報文。所述步驟5包括 步驟5. 1、判斷預(yù)開辟的內(nèi)存塊的大小是否滿足本次轉(zhuǎn)換的需求,本次轉(zhuǎn)換的內(nèi)存大小需求根據(jù)傳入的字符流長度乘以1. 5所得;步驟5. 2、查詢元數(shù)據(jù),獲得當(dāng)前報文所依賴的報文模板;步驟5. 3、將棧結(jié)構(gòu)的首指針回歸到棧頂位置;步驟5. 4、將轉(zhuǎn)換狀態(tài)回歸到初始化狀態(tài);步驟5. 5、循環(huán)步驟5. 2中獲得的報文模板,按照報文模板中節(jié)點據(jù)類型以及節(jié)點在報文模板中的位置在FML32緩沖區(qū)中獲取當(dāng)前結(jié)點對應(yīng)的實際數(shù)據(jù)與結(jié)點名稱,并將其寫入到輸出緩沖區(qū)中;步驟5. 6、判斷棧指針是否到棧頂并且轉(zhuǎn)換狀態(tài)是否為初始化狀態(tài),如果是,則轉(zhuǎn)換成功;步驟5. 7、返回轉(zhuǎn)換后得到的報文。步驟5為步驟4的逆向操作,其處理思路相同。本發(fā)明將報文組成和層次裝載進入內(nèi)存(如圖2所示),每個節(jié)點都可能是單值類型或數(shù)組類型,數(shù)組類型指該節(jié)點可能存在多份數(shù)據(jù)。例如報文中包括姓名、性另I」、子女,其中姓名和性別是單值類型,子女是數(shù)組,子女的屬性可能包括姓名、性別、年齡,都是單值, 當(dāng)然也可能包括數(shù)組的屬性如愛好。在轉(zhuǎn)換流程中,根據(jù)模板項對對應(yīng)的報文項進行轉(zhuǎn)換后填充進入目標(biāo)緩沖區(qū)。下面以JSON到FML32的轉(zhuǎn)換為例進行說明提供數(shù)據(jù)協(xié)議轉(zhuǎn)換接口進行數(shù)據(jù)協(xié)議轉(zhuǎn)換。1.接口定義JSON到FML32的協(xié)議轉(zhuǎn)換void;l<Json_Trans_To_Fml32 (char* json, mpw_int_t len);說明本接口要求傳入一個json協(xié)議格式的字符流。并給出該字符流的長度,以字節(jié)為單位,本接口返回的是一塊內(nèi)存的首地址。該內(nèi)存是按照ml32的協(xié)議格式進行組
幺口fml32到j(luò)son的協(xié)議轉(zhuǎn)換char* Fml32_Trans_To_Json(void*fml, mpw_int_t *len);說明本接口要求傳入一塊內(nèi)存的首地址,該內(nèi)存是按照FML32的協(xié)議格式進行組織,本接口返回的是一個JSON協(xié)議格式的字符流。該字符流的長度通過接口的第二個參數(shù)Ien帶回。2.處理流程JSON到FML32的協(xié)議轉(zhuǎn)換步驟1、首先判斷是否需要進行字符集轉(zhuǎn)換,如果需要,則先進行字符集轉(zhuǎn)換;步驟2、判斷預(yù)開辟的內(nèi)存塊的大小是否滿足本次轉(zhuǎn)換的需求,本次轉(zhuǎn)換的內(nèi)存大小需求根據(jù)傳入的字符流長度乘以1. 5所得;步驟3、將棧結(jié)構(gòu)的首指針回歸到初始位置,即棧頂位置;步驟4、將轉(zhuǎn)換狀態(tài)回歸到eatws初始化狀態(tài);步驟5、開始循環(huán)傳入的JSON串,對每個節(jié)點逐個進行處理,并按照對應(yīng)的數(shù)據(jù)類型以及按照其在JSON中相對位置將節(jié)點壓入FML32緩沖區(qū)中;步驟6、當(dāng)棧指針回歸到棧頂位置并且轉(zhuǎn)換狀態(tài)為成功(Success)的時候,數(shù)據(jù)協(xié)議轉(zhuǎn)換成功。
FML32到JSON的協(xié)議轉(zhuǎn)換步驟1、判斷預(yù)開辟的內(nèi)存塊的大小是否滿足本次轉(zhuǎn)換的需求。本次轉(zhuǎn)換的內(nèi)存大小需求根據(jù)傳入的字符流長度乘以1. 5所得;步驟2、查詢元數(shù)據(jù),獲得當(dāng)前報文所依賴的報文模板,當(dāng)模板項標(biāo)志為數(shù)組項時, 要按數(shù)組方式寫輸出緩沖區(qū);步驟3、將棧結(jié)構(gòu)的首指針回歸到初始位置,即棧頂位置;步驟4、將轉(zhuǎn)換狀態(tài)回歸到eatws初始化狀態(tài);步驟5、循環(huán)步驟2中獲得的報文模板,按照報文模板中節(jié)點據(jù)類型以及節(jié)點在報文模板中的位置在FML32緩沖區(qū)中獲取當(dāng)前結(jié)點對應(yīng)的實際數(shù)據(jù)與結(jié)點名稱,并將其寫入到輸出緩沖區(qū)中;步驟6、判斷棧指針是否到棧頂并且轉(zhuǎn)換狀態(tài)是否為eatws初始化狀態(tài),如果是, 則表明轉(zhuǎn)換成功;步驟7、返回轉(zhuǎn)換后得到的JSON報文。XML到FML32、FML32到XML的轉(zhuǎn)換過程同理,例如XML到FML32、FML32到XML接口定義void* Xml_Trans_To_Fml32(char *xml, mpw_int_t len);char* Fml32_Trans_To_Xml(void*fml, mpw_int_t *len);當(dāng)然,對于XML協(xié)議解析還可采用解析工具包例如rapidxml以獲得更高的效率, 另外,對于XML報文還可提供XSD格式規(guī)則校驗,校驗不成功則不進行后續(xù)處理,以增加應(yīng)用的健壯性。以上所述,對于本領(lǐng)域的普通技術(shù)人員來說,可以根據(jù)本發(fā)明的技術(shù)方案和技術(shù)構(gòu)思作出其他各種相應(yīng)的改變和變形,而所有這些改變和變形都應(yīng)屬于本發(fā)明權(quán)利要求的保護范圍。
權(quán)利要求
1.一種TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,包括如下步驟步驟1、初始化數(shù)據(jù)協(xié)議轉(zhuǎn)換運行所需的上下文,其包括由用于配置數(shù)據(jù)存放路徑的元數(shù)據(jù)來定義的協(xié)議報文模板加載到內(nèi)存中形成哈希表、根據(jù)外部配置獲取協(xié)議報文的字符集定義、及初始化數(shù)據(jù)協(xié)議轉(zhuǎn)換所需的棧結(jié)構(gòu); 步驟2、接收外部傳入的報文字符流;步驟3、判斷傳入的報文字符流是否需要進行字符集轉(zhuǎn)換,如需要則進行轉(zhuǎn)換,獲取報文的長度,并在一 FML32緩沖區(qū)中分配相應(yīng)的內(nèi)存塊;步驟4、對報文進行解析并將報文節(jié)點壓入FML32緩沖區(qū);步驟5、查詢元數(shù)據(jù),獲取當(dāng)前報文所依賴協(xié)議報文模板,通過循環(huán)報文模板以對 FML32緩沖區(qū)的數(shù)據(jù)流進行解析并生成報文,返回協(xié)議轉(zhuǎn)換后的報文。
2.如權(quán)利要求1所述的TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述步驟3中,所分配內(nèi)存塊的大小為字符流長度的1. 5倍。
3.如權(quán)利要求1所述的TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述步驟4包括步驟4. 1、將棧結(jié)構(gòu)的首指針回歸到初始位置;步驟4. 2、將轉(zhuǎn)換狀態(tài)回歸到初始化狀態(tài);步驟 4.3、開始循環(huán)傳入的報文字符流,對每個節(jié)點逐個進行處理,并按照節(jié)點對應(yīng)的數(shù)據(jù)類型以及按照其在報文中相對位置將節(jié)點壓入FML32緩沖區(qū)中;步驟4. 4、當(dāng)棧指針回歸到棧頂位置并且轉(zhuǎn)換狀態(tài)為成功的時候,完成協(xié)議轉(zhuǎn)換。
4.如權(quán)利要求3所述的TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述步驟4中,對于元素類報文結(jié)點進行棧壓入操作,對于文本類的報文結(jié)點直接進行數(shù)據(jù)格式轉(zhuǎn)換后進行出棧操作,直到整個報文循環(huán)完畢。
5.如權(quán)利要求1所述的TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述步驟5包括步驟5.1、判斷預(yù)開辟的內(nèi)存塊的大小是否滿足本次轉(zhuǎn)換的需求,本次轉(zhuǎn)換的內(nèi)存大小需求根據(jù)傳入的字符流長度乘以1. 5所得;步驟5. 2、查詢元數(shù)據(jù),獲得當(dāng)前報文所依賴的報文模板; 步驟5. 3、將棧結(jié)構(gòu)的首指針回歸到棧頂位置;步驟5. 4、將轉(zhuǎn)換狀態(tài)回歸到初始化狀態(tài);步驟5. 5、循環(huán)步驟5. 2中獲得的報文模板,按照報文模板中節(jié)點據(jù)類型以及節(jié)點在報文模板中的位置在FML32緩沖區(qū)中獲取當(dāng)前結(jié)點對應(yīng)的實際數(shù)據(jù)與結(jié)點名稱,并將其寫入到輸出緩沖區(qū)中;步驟5. 6、判斷棧指針是否到棧頂并且轉(zhuǎn)換狀態(tài)是否為初始化狀態(tài),如果是,則轉(zhuǎn)換成功;步驟5. 7、返回轉(zhuǎn)換后得到的報文。
6.如權(quán)利要求5所述的TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述步驟5.2中,當(dāng)模板項標(biāo)志為數(shù)組項時,按數(shù)組方式寫輸出緩沖區(qū)。
7.如權(quán)利要求1所述的TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述步驟1中,所述上下文還包括判斷是否支持多線程操作、及預(yù)開辟的轉(zhuǎn)換時所需內(nèi)存塊的大小。
8.如權(quán)利要求1所述的TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其特征在于,所述報文為JSON或 XML報文。
全文摘要
本發(fā)明提供一種TUXEDO數(shù)據(jù)協(xié)議轉(zhuǎn)換方法,其包括如下步驟步驟1、初始化數(shù)據(jù)協(xié)議轉(zhuǎn)換運行所需的上下文;步驟2、接收外部傳入的報文字符流;步驟3、判斷傳入的報文字符流是否需要進行字符集轉(zhuǎn)換,如需要則進行轉(zhuǎn)換,獲取報文的長度,并在一FML32緩沖區(qū)中分配相應(yīng)的內(nèi)存塊;步驟4、對報文進行解析并將報文節(jié)點壓入FML32緩沖區(qū);步驟5、查詢元數(shù)據(jù),獲取當(dāng)前報文所依賴協(xié)議報文模板,通過循環(huán)報文模板以對FML32緩沖區(qū)的數(shù)據(jù)流進行解析并生成報文,返回協(xié)議轉(zhuǎn)換后的報文。
文檔編號H04L29/06GK102394874SQ20111032989
公開日2012年3月28日 申請日期2011年10月26日 優(yōu)先權(quán)日2011年10月26日
發(fā)明者豐偉, 張利民 申請人:深圳天源迪科信息技術(shù)股份有限公司