邱 巖1,王衛(wèi)兵2
1.青島建筑工程學(xué)院山東 青島266033
2.洛陽市廣播電視大學(xué) 河南 洛陽471000
摘 要:給出了用中間件技術(shù)整合分離的業(yè)務(wù)系統(tǒng)的方法,給出了利用消息中間件完成數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)傳輸、數(shù)據(jù)平衡等關(guān)鍵技術(shù)的具體實(shí)現(xiàn)方法,是解決目前大量存在的系統(tǒng)整合問題的理想方案。
關(guān)鍵詞:系統(tǒng)整合;J2EE;消息中間件;數(shù)據(jù)傳輸
Abstract: The article gives a method for merging the separated working system by using the middle tier components. It gives us many critical skills of information middle tier components for transforming data, transmitting data and balancing data. I t′s an ideal method to solve the question of merging the separated working syst em which is abound at present
Keywords:merging the separated working system;J2EE;informati on middle tier components;transmitting data
1系統(tǒng)總體框架
按照中央及部領(lǐng)導(dǎo)的要求,為強(qiáng)化政府監(jiān)管職能、整頓規(guī)范建筑市場,提高政府宏觀調(diào)控 的科學(xué)性,國家建設(shè)部決定建立全國建筑市場監(jiān)督管理信息系統(tǒng)。由于建筑市場各環(huán)節(jié)的監(jiān)管工作由行政上相對(duì)獨(dú)立的管理機(jī)構(gòu)承擔(dān),因此,原有的建筑市場各業(yè)務(wù)管理系統(tǒng)采取的獨(dú)立開發(fā)系統(tǒng),沒有形成完整、統(tǒng)一、具有宏觀監(jiān)管調(diào)控功能的信息共享的數(shù)據(jù)交換。各地、各部門采用的系統(tǒng)平臺(tái)、數(shù)據(jù)庫平臺(tái)及數(shù)據(jù)庫結(jié)構(gòu)各不相同,無法實(shí)現(xiàn)跨地域、跨部門的信息共享。因此系統(tǒng)設(shè)計(jì)確定利用中間件應(yīng)用服務(wù)器技術(shù),在保證原有業(yè)務(wù)系統(tǒng)正常運(yùn)行的基礎(chǔ)上搭建系統(tǒng)整合平臺(tái),并將分離的業(yè)務(wù)數(shù)據(jù)歸集到數(shù)據(jù)中心,并在此基礎(chǔ)上搭建建筑市場監(jiān)管系統(tǒng),同時(shí)將必要的信息通過公眾信息發(fā)布平臺(tái)(網(wǎng)站)向社會(huì)公布。
各業(yè)務(wù)數(shù)據(jù)通過中間件實(shí)現(xiàn)數(shù)據(jù)的整合和傳輸過程。其中傳輸平臺(tái)采用Apusic iMTS消息 中間件。該中間件采用了Java技術(shù),實(shí)現(xiàn)大批量、安全的數(shù)據(jù)傳輸。并采用Apusic應(yīng)用服務(wù)器所提供的負(fù)載均衡技術(shù)組建監(jiān)管信息系統(tǒng)的服務(wù)器集群,保障監(jiān)管信息系統(tǒng)的容錯(cuò)性和可靠性,在數(shù)據(jù)中心運(yùn)行該平臺(tái)的服務(wù)器端程序,24 h監(jiān)控來自各業(yè)務(wù)系統(tǒng)的待整合數(shù)據(jù),各業(yè)務(wù)系統(tǒng)端運(yùn)行整合平臺(tái)的客戶端程序,負(fù)責(zé)從業(yè)務(wù)系統(tǒng)中抽取符合監(jiān)管系統(tǒng)數(shù)據(jù)規(guī)范的業(yè)務(wù)數(shù)據(jù),整合平臺(tái)的服務(wù)器端程序根據(jù)可配置的規(guī)則對(duì)待整合數(shù)據(jù)進(jìn)行分析、驗(yàn)證和處理,將其裝載到數(shù)據(jù)中心的數(shù)據(jù)庫中?蛻舳顺绦虺槿〉玫降臉I(yè)務(wù)數(shù)據(jù)都封裝為XML格式的數(shù)據(jù)流,再由整合平臺(tái)客戶端程序調(diào)用數(shù)據(jù)傳輸平臺(tái)中的中間件功能進(jìn)行上傳。
2數(shù)據(jù)傳輸技術(shù)
在網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)傳輸,一般來說,首先應(yīng)該考慮其傳輸方式的有效性。如考慮如圖1所示的一種場景。
圖1中節(jié)點(diǎn)A和節(jié)點(diǎn)B之間進(jìn)行數(shù)據(jù)傳輸,中間有防火墻隔離。大多數(shù)的防火墻禁止了直接的T C P/IP端口的訪問,這就意味著采用TCP/IP方式進(jìn)行的數(shù)據(jù)傳輸將無法在節(jié)點(diǎn)A和節(jié)點(diǎn)B之間進(jìn) 行。而與此同時(shí),大多數(shù)的防火墻都開放了http端口80,這就意味著,通過HTTP協(xié)議進(jìn)行的數(shù)據(jù)傳輸無需考慮漫長網(wǎng)絡(luò)路途中無數(shù)的防火墻。這種情形下,J2EE應(yīng)用服務(wù)器,如Apusic應(yīng)用服務(wù)器提供了一種供客戶端Java程序進(jìn)行訪問的http Tunnel的技術(shù)。客戶端程序只要簡單地調(diào)用Java API中的URLConnection對(duì)象就可以向服務(wù)端發(fā)送數(shù)據(jù)。
拋開防火墻,采用一些專業(yè)的數(shù)據(jù)傳輸組件,如金蝶中間件的Apusic iMTS,亦可實(shí)現(xiàn)良好的數(shù)據(jù)傳輸能力。
Apusic iMTS的數(shù)據(jù)傳輸過程如圖2所示。
Apusic iMTS的應(yīng)用場景如圖3所示。
數(shù)據(jù)傳輸技術(shù)中,還有一種可能的方法是采用JMS技術(shù)進(jìn)行傳輸。JMS是Java的消息服務(wù),一般的J2EE應(yīng)用服務(wù)器都提供了JMS服務(wù)。JMS提供了基于主題和隊(duì)列的兩種消息傳送方式。基于主題的消息傳送指的是多個(gè)客戶端預(yù)定某個(gè)主題的消息,然后大致實(shí)現(xiàn)點(diǎn)到多點(diǎn)的消息/數(shù)據(jù)傳送,每個(gè)客戶端都可得到該主題的消息;陉(duì)列的消息傳送即服務(wù)器以隊(duì)列的方式發(fā)送消息,某一客戶端獲得該消息時(shí)該消息即從該隊(duì)列中移除。一些應(yīng)用服務(wù)器提供了所謂增強(qiáng)的JMS消息能力,如IBM的消息中間件,大致的原理和功能應(yīng)用范圍與此類似。可以看出,采用基于JMS的數(shù)據(jù)傳輸技術(shù),除了較難繞過防火墻外,受限于傳輸?shù)臄?shù)據(jù)類型(簡單的Java對(duì)象)和效率等,并不適合用于數(shù)據(jù)庫間的數(shù)據(jù)復(fù)制/整合傳輸。
3數(shù)據(jù)平衡技術(shù)
所謂數(shù)據(jù)平衡技術(shù)是指數(shù)據(jù)在2個(gè)數(shù)據(jù)庫間的同步。如圖4所示。
圖4中數(shù)據(jù)庫A為主數(shù)據(jù)庫,數(shù)據(jù)庫B為分?jǐn)?shù)據(jù)庫。業(yè)務(wù)數(shù)據(jù)b主要通過業(yè)務(wù)系統(tǒng)錄入到分?jǐn)?shù) 據(jù)庫B中,但因?yàn)橐恍┨囟ǖ脑,業(yè)務(wù)數(shù)據(jù)b也可以通過業(yè)務(wù)系統(tǒng)錄入到數(shù)據(jù)庫A中。數(shù)據(jù)庫B中的業(yè)務(wù)數(shù)據(jù)b定期更新到數(shù)據(jù)庫A中,與此同時(shí),也應(yīng)將數(shù)據(jù)庫A上業(yè)務(wù)系統(tǒng)錄入的業(yè)務(wù)數(shù)據(jù)b更新到數(shù)據(jù)庫B中。
很顯然,這種數(shù)據(jù)平衡過程需要著重考慮數(shù)據(jù)長度不一致問題、主鍵問題及數(shù)據(jù)結(jié)構(gòu)不一 致問題等。
主鍵問題主要產(chǎn)生在采用遞增數(shù)字為主鍵的場合,如在Oracle中用sequence為主鍵值。由 于數(shù)據(jù)庫主鍵的約束,這時(shí)不管A至B,還是B至A,數(shù)據(jù)更新都不會(huì)完全成功。怎么辦?修改數(shù)據(jù)庫A上表的主鍵,將其改為UUID形式的字符,同時(shí)在A上建立映射表,將A上的表的主鍵與B上表的主鍵一一對(duì)應(yīng)。
在數(shù)據(jù)結(jié)構(gòu)不一致的情況下,應(yīng)將數(shù)據(jù)庫A中的結(jié)構(gòu)設(shè)為最簡,并在數(shù)據(jù)庫B中數(shù)據(jù)合并至 A時(shí)用規(guī)定的分隔符進(jìn)行組合。顯然,在A上的業(yè)務(wù)系統(tǒng)應(yīng)該將結(jié)構(gòu)展示為B上的數(shù)據(jù)結(jié)構(gòu),其他跟A上數(shù)據(jù)表相關(guān)的業(yè)務(wù)系統(tǒng)應(yīng)該考慮到這種特殊處理場景。
4結(jié)語
全國建筑市場監(jiān)督管理信息系統(tǒng)構(gòu)建時(shí)在數(shù)據(jù)傳輸平臺(tái)中使用中間件技術(shù),這對(duì)于解決已 有老系統(tǒng)的整合、打破信息孤島使資源得以最大限度的共享是非常好的解決方案。由于目前存在大量的系統(tǒng)整合需求,因此,本系統(tǒng)使用的解決方案是較好的案例。
參考文獻(xiàn)
。1] Richard MonsonHaefelEnterprise Java beans O′Reilly & associates 2001
。2]DrAndreas Vogel,The inprise application server building enterprise applicati ons for the net with EJB, CORBA, and XMLInprise Corporation,1999
。3] Sun Microsystems Inc.Enterprise Java beans specification,V1.1Sun Mi crosystems Inc,1999.12.17.
。4] Distributed application development for threetier architectures: microso ft on windows DNAIEEE Internet Computing, Vol. 2, No. 2, March/April 1998.
摘自《現(xiàn)代電子技術(shù)》