![JAVA基于JMX框架的JMS服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)(碩士論文)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/8/aaaec463-247d-4d8b-9f77-ca848df154ba/aaaec463-247d-4d8b-9f77-ca848df154ba1.gif)
![JAVA基于JMX框架的JMS服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)(碩士論文)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/8/aaaec463-247d-4d8b-9f77-ca848df154ba/aaaec463-247d-4d8b-9f77-ca848df154ba2.gif)
![JAVA基于JMX框架的JMS服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)(碩士論文)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/8/aaaec463-247d-4d8b-9f77-ca848df154ba/aaaec463-247d-4d8b-9f77-ca848df154ba3.gif)
![JAVA基于JMX框架的JMS服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)(碩士論文)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/8/aaaec463-247d-4d8b-9f77-ca848df154ba/aaaec463-247d-4d8b-9f77-ca848df154ba4.gif)
![JAVA基于JMX框架的JMS服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)(碩士論文)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/8/aaaec463-247d-4d8b-9f77-ca848df154ba/aaaec463-247d-4d8b-9f77-ca848df154ba5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、分類(lèi)號(hào) tp31 密級(jí) 公開(kāi) udc 編號(hào) 碩士研究生學(xué)位論 文題題 目目 基于基于 jmxjmx 框架的框架的 jmsjms 服務(wù)器服務(wù)器 的設(shè)計(jì)和實(shí)現(xiàn)的設(shè)計(jì)和實(shí)現(xiàn)學(xué)院(所、中心) 軟件學(xué)院 專(zhuān) 業(yè) 名 稱(chēng) 軟件工程 研究生姓名 陳冬 學(xué)號(hào) 1200400668導(dǎo) 師 姓名 周華 職稱(chēng) 研究員 2007 年 4 月聲 明本人聲明所呈交的論文是我個(gè)人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。盡我所知,除了文中特別加以標(biāo)注和致謝的地方外,論文中不包含其他人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,也不包含為獲得云南大學(xué)或其他教育機(jī)構(gòu)的學(xué)位或證明而使用過(guò)的材料。與我一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均已在論
2、文中作了明確的說(shuō)明并表示了謝意。研究生簽名: 日 期: 論文使用和授權(quán)說(shuō)明本人完全了解云南大學(xué)有關(guān)保留、使用學(xué)位論文的規(guī)定,即:學(xué)校有權(quán)保留并向國(guó)家有關(guān)部門(mén)或機(jī)構(gòu)送交學(xué)位論文和論文電子版;允許論文被查閱或借閱;學(xué)??梢怨颊撐牡娜炕虿糠謨?nèi)容,可以采用影印、縮印或其他復(fù)制手段保存論文;授權(quán)學(xué)校將學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索。 (保密的論文在解密后應(yīng)遵循此規(guī)定)研究生簽名: 導(dǎo)師簽名: 日 期: 云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- i -摘摘 要要隨著世界經(jīng)濟(jì)的全球化進(jìn)程,電子商務(wù)的蓬勃發(fā)展以及網(wǎng)絡(luò)應(yīng)用的日益普及,對(duì)于分布式應(yīng)用和計(jì)算的要求
3、越來(lái)越高。如何高效,安全,準(zhǔn)確地進(jìn)行分布式系統(tǒng)間的通信已經(jīng)成為了目前網(wǎng)絡(luò)應(yīng)用和分布式計(jì)算所迫切需要解決的關(guān)鍵問(wèn)題之一。消息中間件為應(yīng)用系統(tǒng)之間提供了可靠,高效,跨平臺(tái)的消息傳遞服務(wù),有利于應(yīng)用之間的數(shù)據(jù)交換,是解決如上問(wèn)題有效方案。雖然消息中間件實(shí)現(xiàn)的目標(biāo)和功能大同小異,但是在具體的實(shí)現(xiàn)上有很大的差異,不同的廠(chǎng)商基于各自的開(kāi)發(fā)標(biāo)準(zhǔn)和接口,因而不同系統(tǒng)之間兼容性不好,這樣不利于降低企業(yè)的成本,同時(shí)也加重了應(yīng)用開(kāi)發(fā)者和系統(tǒng)維護(hù)的負(fù)擔(dān)。因此,作為消息中間件的一個(gè)規(guī)范接口標(biāo)準(zhǔn),jms 規(guī)范已經(jīng)被各大廠(chǎng)商所接受。論文正是基于以上目的設(shè)計(jì)了一個(gè)遵從 jms1.1 規(guī)范的基于 jmx 技術(shù)的消息中間件。論文
4、首先對(duì)中間件技術(shù)及其分類(lèi)做了綜述,介紹了與消息中間件相關(guān)的一些概念和模型。其次,對(duì) sun 公司提出的 jms api 接口規(guī)范進(jìn)行分析,解決了jms 實(shí)現(xiàn)的關(guān)鍵問(wèn)題,并且將 jmx 技術(shù)引入到消息中間件的管理中,提出了jms 消息中間件的設(shè)計(jì)和實(shí)現(xiàn)的思路。論文給出了系統(tǒng)整體構(gòu)架的分析和設(shè)計(jì),對(duì)其中的關(guān)鍵技術(shù)進(jìn)行了深入分析,提出了相應(yīng)的解決方案,并實(shí)現(xiàn)了系統(tǒng)的各個(gè)主要功能模塊。最后,論文指出了存在的問(wèn)題和下一步的改進(jìn)工作。關(guān)鍵詞 消息中間件; jms 規(guī)范; jmx 分布式管理框架.云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- ii -abstractalong w
5、ith the economy globalities and the progress of e-commerce application, these applications become the challenge of todays web and distributed systems. how to provide the efficacious, reliable and safe communication service of distributed systems is the key of these applications.message oriented midd
6、leware(mom) which is widely applied can provide reliable and efficacious message deliver service and avail data exchange among applications. although the goal and function of most message oriented middleware is very common, the implements of mom varies with the different mom provider and each provid
7、er has its own development standard and interface. therefore, the compatibility among providers is very weak, which will confine the choice of enterprise and increase the overload of developer. obviously, it is very significative to pursuit a open and universal mom service interface, jms api specifi
8、cation, which is accepted by most companies, caters for the demand. this thesis summerises the technology and category of middleware firstly, and introduce some general concept and message model on message oriented middleware. then, jms api specification of sun microsystem incorpration is analyzed.
9、in the rest part, the thesis takes jmx technology into the design of the jms and discusses the design and implementation of jms message oriented middleware and. this thesis discusses the system architecture and the design of imported parts. and some key technologies, such as thread pool and work que
10、ue, thread synchronization, is illustrated in detail. finally, the existing problem and future step are pointed out. keywords message-oriented middleware(mom); jms api specification; java management extensions(jmx).云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-iii -目目 錄錄摘 要.iabstract .ii目 錄.iii第一章 引言.11.1 研究目
11、的及問(wèn)題概述 .11.2 研究范圍及創(chuàng)新 .11.3 論文結(jié)構(gòu) .2第二章 分布式應(yīng)用的挑戰(zhàn).32.1 網(wǎng)絡(luò)應(yīng)用模式的發(fā)展 .32.2 分布式網(wǎng)絡(luò)通訊面臨的挑戰(zhàn) .4第三章 消息中間件和 jms 規(guī)范概述.53.1 中間件的概述 .53.1.1 中間件的發(fā)展.53.1.2 中間件的作用和特點(diǎn).63.1.3 主要中間件的分類(lèi).63.2 消息中間件的概述 .93.2.1 消息中間件的由來(lái).93.2.2 消息中間件的定義.103.2.3 消息中間件的關(guān)鍵技術(shù).103.2.4 sun 對(duì)消息中間件的貢獻(xiàn) jms.113.3 jms 簡(jiǎn)介.113.3.1 jms 概述.113.3.2 jms 的目標(biāo).1
12、13.3.3 jms 的體系結(jié)構(gòu).12云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-iv -3.3.4 jms 的基本概念.123.3.5 jms 的 api.153.3.6 利用 jms 進(jìn)行客戶(hù)端開(kāi)發(fā)的主要步驟.163.4 小結(jié) .18第四章 jms 關(guān)鍵技術(shù)研究.194.1 消息隊(duì)列的設(shè)計(jì) .194.1.1 消息隊(duì)列的工作方式.194.1.2 消息隊(duì)列的實(shí)現(xiàn)原理.204.2 jms 接口的封裝和實(shí)現(xiàn).244.2.1 jms 接口的實(shí)現(xiàn)策略.244.2.2 為 connection 對(duì)象建立對(duì)象池.254.3 xml 技術(shù)在 xmb 中的應(yīng)用 .314.3.1 x
13、ml 技術(shù)概述.314.3.2 利用 xml 實(shí)現(xiàn)消息的持久化存儲(chǔ).324.3.3 利用 xml 實(shí)現(xiàn) jms 服務(wù)器的啟動(dòng)配置.354.4 jmx 技術(shù)在 xmb 中的應(yīng)用.364.4.1 jmx 技術(shù)概述.364.4.2 利用 jmx 實(shí)現(xiàn) jms 服務(wù)器的管理.384.5 小結(jié) .41第五章 xmb 的設(shè)計(jì).425.1 設(shè)計(jì)思想和系統(tǒng)目標(biāo) .425.1.1 系統(tǒng)構(gòu)思.425.1.2 系統(tǒng)所需的 java 技術(shù) .425.2 系統(tǒng)的基本處理流程 .435.3 系統(tǒng)架構(gòu) .44云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-v -5.3.1 xmb 的體系結(jié)構(gòu).445
14、.3.2 jms 實(shí)現(xiàn)模塊詳解.455.4 接口實(shí)現(xiàn)部件的設(shè)計(jì) .465.4.1 模塊上下文環(huán)境.465.4.2 模塊的內(nèi)部交互.475.4.3 模塊的內(nèi)部結(jié)構(gòu).495.5 對(duì)象傳輸層的設(shè)計(jì) .525.5.1 模塊上下文環(huán)境.525.5.2 模塊的內(nèi)部交互.535.5.3 模塊的內(nèi)部結(jié)構(gòu).555.6 系統(tǒng)中的 xml 處理部件的設(shè)計(jì) .565.6.1 系統(tǒng)的啟動(dòng)配置.575.6.3 持久化 jms 受管對(duì)象.595.7 管理框架的設(shè)計(jì) .595.7.1 管理框架的上下文.595.7.2 管理框架的內(nèi)部交互.605.7.3 管理框架的內(nèi)部結(jié)構(gòu).625.8 小結(jié) .65第六章 總結(jié)與展望.666.
15、1 總結(jié) .666.2 進(jìn)一步工作 .66參考文獻(xiàn).68致 謝.70云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 1 -第一章第一章 引言引言1.1 研究目的及問(wèn)題概述回顧互聯(lián)網(wǎng)的發(fā)展軌跡,我們可以看到互聯(lián)網(wǎng)的面貌正在迅速發(fā)生變化,互聯(lián)網(wǎng)所能傳遞、共享的各種信息呈現(xiàn)出不同的形態(tài),使得互聯(lián)網(wǎng)能夠提供越來(lái)越豐富的應(yīng)用??梢钥吹剑瑥耐ㄐ欧绞?、娛樂(lè)方式到商業(yè)模式,互聯(lián)網(wǎng)應(yīng)用在多個(gè)領(lǐng)域?qū)崿F(xiàn)著對(duì)傳統(tǒng)模式的顛覆。隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)應(yīng)用經(jīng)歷了從簡(jiǎn)單到復(fù)雜,從集中到分布的演變。大型分布式應(yīng)用程序的構(gòu)建和維護(hù)卻成了一個(gè)復(fù)雜的事情,尤其是不同應(yīng)用程序之間的通信問(wèn)題。伴隨著網(wǎng)絡(luò)環(huán)境的日
16、益復(fù)雜,網(wǎng)絡(luò)中的通信問(wèn)題也日趨嚴(yán)重。主要表現(xiàn)在兩個(gè)方面1:首先,在大型的分布式網(wǎng)絡(luò)應(yīng)用中,不同的應(yīng)用運(yùn)行在不同的進(jìn)程中,分布在不同的計(jì)算機(jī)上,甚至是跨系統(tǒng),跨平臺(tái)的,如何將這些應(yīng)用有效的集成,使不同的應(yīng)用之間能保持良好的通信,使其發(fā)揮分布式應(yīng)用的真正的巨大優(yōu)勢(shì)已經(jīng)成為衡量一個(gè)分布式應(yīng)用是否可靠,是否穩(wěn)定的重要標(biāo)準(zhǔn)。其次,大多數(shù)傳統(tǒng)的通信技術(shù)要求發(fā)送和接收方必須遵循兩個(gè)條件:1)雙方通訊是同步的;2)雙方必須同時(shí)知道相互程序之間的調(diào)用接口。然而,在分布式環(huán)境中,應(yīng)用并不總是同時(shí)運(yùn)行的;而且網(wǎng)絡(luò)并不總是可用和可靠的;數(shù)據(jù)的流量具有突發(fā)性,并可能造成網(wǎng)絡(luò)的擁塞,這樣一來(lái)分布式應(yīng)用之間的異步通信問(wèn)題就
17、變得非常突出了。這些問(wèn)題的提出對(duì)大型分布式應(yīng)用程序提出了挑戰(zhàn),如何解決這些問(wèn)題,使分布式應(yīng)用程序能高效,穩(wěn)定和安全的運(yùn)行,降低開(kāi)發(fā)的成本并提高應(yīng)用的投資回報(bào)率,成為了開(kāi)發(fā)人員急需解決的問(wèn)題。1.2 研究范圍及創(chuàng)新消息中間件無(wú)疑是解決分布式應(yīng)用程序之間通信的核心技術(shù)之一。消息中間件可利用高效,可靠的消息傳輸機(jī)制進(jìn)行平臺(tái)無(wú)關(guān)的數(shù)據(jù)傳輸,并基于消息的通信進(jìn)行分布式系統(tǒng)的集成3。它適用于任何需要進(jìn)行網(wǎng)絡(luò)通信的系統(tǒng),負(fù)責(zé)建立網(wǎng)絡(luò)通信的通道,進(jìn)行數(shù)據(jù)或文件發(fā)送。消息中間件可以跨平臺(tái)操作,為不同操作系統(tǒng)上的應(yīng)用軟件集成提供方便,從而滿(mǎn)足企業(yè)對(duì)系統(tǒng)伸縮性和可擴(kuò)展性的要求。在此背景下,本論文設(shè)計(jì)了基于 jmx
18、框架的 jms 服務(wù)器 (下文稱(chēng)為 jmx-云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 2 -oriented message bus server,簡(jiǎn)稱(chēng)為 xmb 服務(wù)器)系統(tǒng)。xmb 是一個(gè)遵從jms1.1 規(guī)范的基于 jmx 管理框架的消息中間件實(shí)現(xiàn)。該中間件從邏輯上分為兩大部分:一部分是客戶(hù)端編程接口;另一部分則實(shí)現(xiàn)一個(gè)基于 jms 規(guī)范的消息中間件服務(wù)器6。本論文首先對(duì)中間件技術(shù)及其分類(lèi)做了綜述,介紹了與消息中間件相關(guān)的一些概念和模型,然后討論了設(shè)計(jì)一個(gè) jms 實(shí)現(xiàn)的關(guān)鍵技術(shù)并給出了相應(yīng)的解決方案,最后論文從 xmb 系統(tǒng)的體系結(jié)構(gòu)入手,分別設(shè)計(jì)了 x
19、mb 系統(tǒng)中的各個(gè)關(guān)鍵模塊和重要部件。xmb 符合 jms1.1 規(guī)范的相應(yīng)要求,支持兩種消息通訊模式,支持消息的異步通訊,支持消息的持久化和消息消費(fèi)者的持久化。同時(shí),本論文通過(guò) jmx 技術(shù)的引入填補(bǔ)了 jms 規(guī)范在服務(wù)器管理方面的空白。由于 jmx 技術(shù)可以跨越一系列異構(gòu)操作系統(tǒng)平臺(tái)、系統(tǒng)體系結(jié)構(gòu)和網(wǎng)絡(luò)傳輸協(xié)議,靈活的開(kāi)發(fā)無(wú)縫集成的系統(tǒng)、網(wǎng)絡(luò)和服務(wù)管理應(yīng)用15。系統(tǒng)通過(guò) jmx 技術(shù)的引入大大簡(jiǎn)化jms 服務(wù)器的管理工作,并為整個(gè) xmb 系統(tǒng)提供了極具伸縮性和可擴(kuò)展性的體系結(jié)構(gòu)。1.3 論文結(jié)構(gòu)本論文組織結(jié)構(gòu)如下:第一章介紹了本論文的研究目的,研究范圍以及論文的創(chuàng)新點(diǎn);第二章簡(jiǎn)單介紹了
20、網(wǎng)絡(luò)應(yīng)用模式的發(fā)展以及分布式應(yīng)用面臨的問(wèn)題;第三章介紹了消息中間件技術(shù)的發(fā)展和特點(diǎn),并重點(diǎn)介紹了 jms 技術(shù)規(guī)范以及相關(guān)的概念和特點(diǎn);第四章討論了設(shè)計(jì)一個(gè) jms 實(shí)現(xiàn)可能遇到的關(guān)鍵技術(shù)問(wèn)題,并給出了相應(yīng)的一些解決方案;第五章從 xmb 系統(tǒng)的架構(gòu)入手,分別討論了該系統(tǒng)各個(gè)關(guān)鍵模塊和主要部件的設(shè)計(jì);第六章對(duì)論文進(jìn)行了總結(jié)并對(duì)后續(xù)研究提出了展望。云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 3 -第二章第二章 分布式應(yīng)用的挑戰(zhàn)分布式應(yīng)用的挑戰(zhàn)2.12.1 網(wǎng)絡(luò)應(yīng)用模式的發(fā)展網(wǎng)絡(luò)應(yīng)用模式的發(fā)展回顧互聯(lián)網(wǎng)的發(fā)展軌跡,我們可以看到互聯(lián)網(wǎng)的面貌正在迅速發(fā)生變化,互聯(lián)網(wǎng)所能傳
21、遞、共享的各種信息呈現(xiàn)出不同的形態(tài),使得互聯(lián)網(wǎng)能夠提供越來(lái)越豐富的應(yīng)用??梢钥吹剑瑥耐ㄐ欧绞?、娛樂(lè)方式到商業(yè)模式,互聯(lián)網(wǎng)應(yīng)用在多個(gè)領(lǐng)域?qū)崿F(xiàn)著對(duì)傳統(tǒng)模式的顛覆。例如在商業(yè)領(lǐng)域,互聯(lián)網(wǎng)可以支持更加個(gè)性化、定制化的服務(wù),賦予了客戶(hù)更多的自由度和選擇空間。可以說(shuō),互聯(lián)網(wǎng)應(yīng)用的豐富不僅體現(xiàn)在數(shù)量的增多,而且針對(duì)不同領(lǐng)域提供的服務(wù)的滿(mǎn)足度正在不斷提高,由此帶動(dòng)了互聯(lián)網(wǎng)本身的社會(huì)和經(jīng)濟(jì)價(jià)值不斷提升,并且對(duì)傳統(tǒng)的社會(huì)和經(jīng)濟(jì)形態(tài)形成了強(qiáng)有力的沖擊。但是不管互聯(lián)網(wǎng)的內(nèi)容和形式發(fā)生的多少變化,迄今為止,網(wǎng)絡(luò)應(yīng)用模式的發(fā)展大致經(jīng)歷了四個(gè)階段4:1. 以大型機(jī)為中心的分時(shí)共享模式,它是采用大型機(jī)為中心,并配備了多個(gè)終端
22、所組成的一個(gè)系統(tǒng)。這種模式是利用主機(jī)的超強(qiáng)處理能力,主機(jī)是整個(gè)系統(tǒng)的核心,但是一旦主機(jī)出現(xiàn)故障,那么整個(gè)系統(tǒng)就將癱瘓。2. 以服務(wù)器為中心的資源共享模式,它通過(guò)網(wǎng)絡(luò)將多臺(tái)計(jì)算機(jī)連接,以實(shí)現(xiàn)資源的共享。這種模式從分利用了各個(gè)站點(diǎn)的計(jì)算能力,應(yīng)用開(kāi)始出現(xiàn)了真正意義上的位置的分布式。3. client/server 計(jì)算模式是目前仍在大量使用中的計(jì)算模式。在基于 c/s 模式的應(yīng)用中,數(shù)據(jù)一般統(tǒng)一存放在數(shù)據(jù)服務(wù)器上,而有關(guān)的業(yè)務(wù)邏輯一般都在客戶(hù)端實(shí)現(xiàn),這就是所謂的胖客戶(hù)端解決方方案。但是隨著 c/s 模式的發(fā)展,許多應(yīng)用開(kāi)始體現(xiàn)出它的局限性:1)應(yīng)用的層次一般比較混亂,不能或者難以劃分應(yīng)用邏輯;2)
23、應(yīng)用的安全性比較差;3)應(yīng)用的可擴(kuò)展性比較差;4) 應(yīng)用的維護(hù)工作量比較大。4. 為了改進(jìn) client/server 的計(jì)算模式,使之更能適應(yīng)當(dāng)今的網(wǎng)絡(luò)和分布式應(yīng)用的需求,網(wǎng)絡(luò)應(yīng)用的計(jì)算模式正在向兩個(gè)方向發(fā)展。首先中間件的出現(xiàn)為 c/s模式帶來(lái)了一次革新。在原來(lái)的兩層結(jié)構(gòu)中,現(xiàn)在可以利用中間件實(shí)現(xiàn)多層結(jié)構(gòu)。而且中間件提供了從消息處理,網(wǎng)絡(luò)通訊到數(shù)據(jù)處理等多方位的底層服務(wù)功能,使得應(yīng)用系統(tǒng)的開(kāi)發(fā)從技術(shù)細(xì)節(jié)的實(shí)現(xiàn)中解放出來(lái),能更多的投云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 4 -入業(yè)務(wù)邏輯的處理當(dāng)中。而業(yè)務(wù)邏輯也逐漸開(kāi)始從客戶(hù)端慢慢向服務(wù)器端轉(zhuǎn)移,這就是所謂的瘦
24、客戶(hù)端。但是客戶(hù)端的維護(hù)問(wèn)題仍然存在,為了完全解決這個(gè)問(wèn)題,brower/server 計(jì)算模式從而應(yīng)運(yùn)而生。但是 b/s 計(jì)算模式同樣存在自己的一些局限性:1)單一的基于 http 的通訊,效率不高;2)客戶(hù)端的表現(xiàn)能力不強(qiáng);3)同樣存在瀏覽器的類(lèi)型和版本問(wèn)題。在目前的網(wǎng)絡(luò)應(yīng)用中,主要以 b/s 結(jié)構(gòu)和多層 c/s 結(jié)構(gòu)的應(yīng)用為主,而大量的中間件產(chǎn)品正在為這些應(yīng)用提供引擎動(dòng)力。中間件技術(shù)涉及到了網(wǎng)絡(luò)應(yīng)用中的各個(gè)方面,提供了最核心的底層技術(shù)支持,已經(jīng)發(fā)展成為網(wǎng)絡(luò)應(yīng)用中不可替代的關(guān)鍵技術(shù)。2.22.2 分布式網(wǎng)絡(luò)通訊面臨的挑戰(zhàn)分布式網(wǎng)絡(luò)通訊面臨的挑戰(zhàn)網(wǎng)絡(luò)應(yīng)用經(jīng)歷了從簡(jiǎn)單到復(fù)雜,從集中到分布的演變
25、。大型分布式應(yīng)用程序的構(gòu)建和維護(hù)卻是一個(gè)十分復(fù)雜的事情,尤其是不同應(yīng)用程序之間的通信。伴隨著網(wǎng)絡(luò)環(huán)境的日益復(fù)雜,網(wǎng)絡(luò)中的通信問(wèn)題也日趨嚴(yán)重。主要表現(xiàn)在兩個(gè)方面1:1. 在大型的分布式網(wǎng)絡(luò)應(yīng)用中,不同的應(yīng)用運(yùn)行在不同的進(jìn)程中,分布在不同的計(jì)算機(jī)上,甚至是跨系統(tǒng),跨平臺(tái)的,如何將這些應(yīng)用有效的集成,使不同的應(yīng)用之間能保持良好的通信,使其發(fā)揮分布式應(yīng)用的真正的巨大優(yōu)勢(shì)。這已經(jīng)成為衡量一個(gè)分布式應(yīng)用是否可靠,是否穩(wěn)定的重要標(biāo)準(zhǔn)。2. 大多數(shù)傳統(tǒng)的通信技術(shù)要求發(fā)送和接收方必須遵循兩個(gè)條件:1)雙方必須同時(shí)在線(xiàn),即通訊是同步的;2)雙方必須同時(shí)知道相互程序之間的調(diào)用接口。這樣就要求一旦一個(gè)應(yīng)用程序有任何接
26、口的變化,就必須通知其他的應(yīng)用程序。同時(shí)為了保持?jǐn)?shù)據(jù)的完整性,發(fā)送和接收在實(shí)際的實(shí)現(xiàn)中可能必須使用分布式事務(wù),以確保一方應(yīng)用的數(shù)據(jù)改變能被雙方承認(rèn)。然而,在分布式環(huán)境中,應(yīng)用并不總是同時(shí)運(yùn)行的;而且網(wǎng)絡(luò)并不總是可用和可靠的;數(shù)據(jù)的流量具有突發(fā)性,并可能造成網(wǎng)絡(luò)的擁塞,這樣一來(lái)分布式應(yīng)用之間的異步通信問(wèn)題就變得非常突出了。這些問(wèn)題的提出對(duì)大型分布式應(yīng)用程序提出了挑戰(zhàn),如何解決這些問(wèn)題,使分布式應(yīng)用程序能高效,穩(wěn)定和安全的運(yùn)行,降低開(kāi)發(fā)的成本并提高應(yīng)用的投資回報(bào)率,成為了開(kāi)發(fā)人員急需解決的問(wèn)題。云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 5 -第三章第三章 消息中間件
27、和消息中間件和 jmsjms 規(guī)范概述規(guī)范概述3.1 中間件中間件的概述的概述3.1.1 中間件的中間件的發(fā)展發(fā)展隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展。從硬件技術(shù)看,cpu 速度越來(lái)越高,處理能力越來(lái)越強(qiáng);從軟件技術(shù)看,應(yīng)用程序的規(guī)模不斷擴(kuò)大,特別是 internet 及www 的出現(xiàn),使計(jì)算機(jī)的應(yīng)用范圍更為廣闊,許多應(yīng)用程序需在網(wǎng)絡(luò)環(huán)境的異構(gòu)平臺(tái)上運(yùn)行。這一切都對(duì)新一代的軟件開(kāi)發(fā)提出了新的需求。在這種分布異構(gòu)環(huán)境中,通常存在多種硬件系統(tǒng)平臺(tái)(如 pc,工作站,小型機(jī)等),在這些硬件平臺(tái)上又存在各種各樣的系統(tǒng)軟件(如不同的操作系統(tǒng)、數(shù)據(jù)庫(kù)、語(yǔ)言編譯器等),以及多種風(fēng)格各異的用戶(hù)界面,這些硬件系統(tǒng)平臺(tái)還可能
28、采用不同的網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)體系結(jié)構(gòu)連接。如何把這些系統(tǒng)集成起來(lái)并開(kāi)發(fā)新的應(yīng)用是一個(gè)非常現(xiàn)實(shí)而困難的問(wèn)題。中間件概念的出現(xiàn)就是為解決這些分布異構(gòu)問(wèn)題的。中間件(middleware)是位于平臺(tái)(硬件和操作系統(tǒng))和應(yīng)用之間的通用服務(wù),這些服務(wù)具有標(biāo)準(zhǔn)的程序接口和協(xié)議。針對(duì)不同的操作系統(tǒng)和硬件平臺(tái),它們可以有符合接口和協(xié)議規(guī)范的多種實(shí)現(xiàn)2。中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用系統(tǒng)借助這種軟件在不同的技術(shù)之間共享資源,管理計(jì)算資源和網(wǎng)絡(luò)通訊。它在計(jì)算機(jī)系統(tǒng)中是一個(gè)關(guān)鍵軟件,它能實(shí)現(xiàn)應(yīng)用的互連和互操作性,能保證系統(tǒng)的安全、可靠、高效的運(yùn)行。中間件位于用戶(hù)應(yīng)用和操作系統(tǒng)及網(wǎng)絡(luò)軟件之間(如圖 3-
29、1 所示),它為應(yīng)用提供了公用的通信手段,并且獨(dú)立于網(wǎng)絡(luò)和操作系統(tǒng)。中間件為開(kāi)發(fā)者提供了公用于所有環(huán)境的應(yīng)用程序接口,當(dāng)應(yīng)用程序中嵌入其函數(shù)調(diào)用,它便可利用其運(yùn)行的特定操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境的功能,為應(yīng)用執(zhí)行通信功能5。云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 6 -應(yīng)用應(yīng)用應(yīng)用應(yīng)用中間件中間件(提供分布式系統(tǒng)服務(wù)提供分布式系統(tǒng)服務(wù))操作系統(tǒng)操作系統(tǒng)硬件硬件操作系統(tǒng)操作系統(tǒng)硬件硬件 網(wǎng)絡(luò)網(wǎng)絡(luò)圖 3-1 中間件的位置3.1.2 中間件的作用和特點(diǎn)中間件的作用和特點(diǎn)中間件滿(mǎn)足了大量應(yīng)用的需要,運(yùn)行于多種硬件和 os 平臺(tái)上,它支持分布計(jì)算,提供跨網(wǎng)絡(luò)、跨硬件和 os 平
30、臺(tái)的透明的應(yīng)用或服務(wù)的交互,支持標(biāo)準(zhǔn)的協(xié)議,支持標(biāo)準(zhǔn)的接口。由于標(biāo)準(zhǔn)接口對(duì)于可移植性和標(biāo)準(zhǔn)協(xié)議對(duì)于互操作性的重要性,中間件已成為許多標(biāo)準(zhǔn)化工作的主要部分。對(duì)于應(yīng)用軟件開(kāi)發(fā),中間件遠(yuǎn)比操作系統(tǒng)和網(wǎng)絡(luò)服務(wù)更為重要,中間件提供的程序接口定義了一個(gè)相對(duì)穩(wěn)定的高層應(yīng)用環(huán)境,不管底層的計(jì)算機(jī)硬件和系統(tǒng)軟件怎樣更新?lián)Q代,只要將中間件升級(jí)更新,并保持中間件對(duì)外的接口定義不變,應(yīng)用軟件幾乎不需任何修改,從而保護(hù)了企業(yè)在應(yīng)用軟件開(kāi)發(fā)和維護(hù)中的重大投資。 3.1.3 主要中間件的分類(lèi)主要中間件的分類(lèi) 目前,中間件所包括的范圍十分廣泛,針對(duì)不同的應(yīng)用需求涌現(xiàn)出多種各具特色的中間件產(chǎn)品。但至今中間件還沒(méi)有一個(gè)比較精確的
31、定義,因此,在不同的角度或不同的層次上,對(duì)中間件的分類(lèi)也會(huì)有所不同。按照 idc 的分類(lèi)方法,中間件大致可分為六類(lèi)4。(一)終端仿真/屏幕轉(zhuǎn)換用以實(shí)現(xiàn)客戶(hù)機(jī)圖形用戶(hù)接口與已有的字符接口方式的的服務(wù)器應(yīng)用程序之間的互操作。 云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 7 -(二)數(shù)據(jù)訪(fǎng)問(wèn)中間件適用于應(yīng)用程序與數(shù)據(jù)源之間的互操作模型,客戶(hù)端使用面向數(shù)據(jù)庫(kù)的api,以提請(qǐng)直接訪(fǎng)問(wèn)和更新基于服務(wù)器的數(shù)據(jù)源,數(shù)據(jù)源可以是關(guān)系型、非關(guān)系型和對(duì)象型。這類(lèi)中間件大都基于 sql 語(yǔ)句,采用同步通訊方式。此類(lèi)中間件使應(yīng)用開(kāi)發(fā)簡(jiǎn)單,但如果是透過(guò)廣域網(wǎng)使用,會(huì)帶來(lái)嚴(yán)重的效率問(wèn)題,因?yàn)樵?/p>
32、低速網(wǎng)上來(lái)回交互 sql 語(yǔ)句會(huì)使通訊流量過(guò)大,同時(shí)對(duì)數(shù)據(jù)壓縮、加密帶來(lái)不便。(三)遠(yuǎn)程過(guò)程調(diào)用中間件rpc 機(jī)制是早期開(kāi)發(fā)分布式應(yīng)用時(shí)經(jīng)常采用的一種同步式的請(qǐng)求應(yīng)答協(xié)議。通過(guò)這種協(xié)議,程序員編寫(xiě)客戶(hù)方的應(yīng)用,需要時(shí)可以調(diào)用位于遠(yuǎn)端服務(wù)器上的過(guò)程。當(dāng)編譯一個(gè)采用 rpc 機(jī)制的客戶(hù)方應(yīng)用時(shí),編譯器告之代表遠(yuǎn)程功能調(diào)用的句柄,客戶(hù)方需要調(diào)用遠(yuǎn)地的過(guò)程時(shí),引用相應(yīng)的功能調(diào)用的句柄,由 rpc 機(jī)制來(lái)負(fù)責(zé)客戶(hù)端程序?qū)崟r(shí)地調(diào)用到遠(yuǎn)地的過(guò)程。服務(wù)器上的過(guò)程返回后,客戶(hù)方的程序得到結(jié)果并繼續(xù)往下進(jìn)行。在采用 rpc 機(jī)制時(shí),調(diào)用遠(yuǎn)端的過(guò)程只需去引用它,而不必告之網(wǎng)絡(luò)地址或其它底層信息。rpc 機(jī)制可用以構(gòu)
33、造客戶(hù)機(jī)/服務(wù)器方式的應(yīng)用,但由于它是同步方式,因而在工作的時(shí)候,要求客戶(hù)方和服務(wù)方均能正常工作才能很好地運(yùn)行,有一方不能工作將導(dǎo)致 rpc 失敗。這在網(wǎng)絡(luò)故障、機(jī)器故障存在的情況下,這一要求是很難保證的。還有一點(diǎn)值得注意的是,不管客戶(hù)方能做什么或做的多快,它必須依靠服務(wù)方才能有效工作。有些恢復(fù)機(jī)制可以在一個(gè)遠(yuǎn)程調(diào)用阻塞時(shí)轉(zhuǎn)而去調(diào)用另一個(gè)服務(wù)器上的過(guò)程,但這種路由方式也會(huì)影響效率。目前,也有的 rpc 機(jī)制采用異步方式,客戶(hù)方非阻塞地調(diào)用遠(yuǎn)端的過(guò)程,但這種方式不太標(biāo)準(zhǔn)而且很難采用。另外,由于大多數(shù) rpc 機(jī)制很難建立點(diǎn)到點(diǎn)的關(guān)系,因而也很難用在面向?qū)ο蟮木幊坍?dāng)中。(四)消息中間件盡管消息中間
34、件不象 rpc 機(jī)制那樣流行,但越來(lái)越多的分布式應(yīng)用采用消息中間件來(lái)構(gòu)建,通過(guò)消息中間件來(lái)把應(yīng)用擴(kuò)展到不同的操作系統(tǒng)和不同的網(wǎng)絡(luò)環(huán)境。云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 8 -基于消息的機(jī)制更多地適用于事件驅(qū)動(dòng)的應(yīng)用,當(dāng)一個(gè)事件發(fā)生時(shí),消息中間件通知服務(wù)方應(yīng)該進(jìn)行何種操作。事件可以是一個(gè)請(qǐng)求,也可以只是一種警示,警示到來(lái)后,即可進(jìn)行某種處理,但不需等待應(yīng)答。使用消息中間件編程采用的是消息中間件的 api,可以很好地?cái)U(kuò)展到不同的操作系統(tǒng)和硬件平臺(tái)上。消息中間件的核心安裝在需要進(jìn)行消息傳遞的系統(tǒng)上,在它們之間建立邏輯通道,由消息中間件實(shí)現(xiàn)消息發(fā)送。消息中間件可
35、以既支持同步方式,又支持異步方式,實(shí)際上它是一種點(diǎn)到點(diǎn)的機(jī)制,因而可以很好地適用于面向?qū)ο蟮木幊谭绞?。中間件領(lǐng)域目前最熱門(mén)的技術(shù)是異步的消息中間件,異步中間件技術(shù)比同步中間件技術(shù)具有更強(qiáng)的容錯(cuò)性,在系統(tǒng)故障時(shí)可以保證消息的正常傳輸,因而在過(guò)去的兩年里增長(zhǎng)迅速。異步中間件技術(shù)可以分為兩類(lèi):廣播方式和發(fā)布/訂閱方式。廣播方式把消息分發(fā)給系統(tǒng)的所有用戶(hù)。發(fā)行/訂閱方式可以指定哪種類(lèi)型的用戶(hù)可以接收哪種類(lèi)型的消息。發(fā)布/訂閱方式由于更加智能有效,事實(shí)上已成為異步中間件的非正式標(biāo)準(zhǔn)。(五)交易中間件交易中間件是專(zhuān)門(mén)針對(duì)聯(lián)機(jī)交易處理系統(tǒng)而設(shè)計(jì)的。聯(lián)機(jī)交易處理系統(tǒng)需要處理大量并發(fā)進(jìn)程,處理并發(fā)涉及到操作系統(tǒng)
36、、文件系統(tǒng)、編程語(yǔ)言、數(shù)據(jù)通訊、數(shù)據(jù)庫(kù)系統(tǒng)、系統(tǒng)管理、應(yīng)用軟件,是一個(gè)相當(dāng)艱巨的任務(wù),但是工作的難度可以通過(guò)采用一個(gè)交易中間件來(lái)簡(jiǎn)化。交易中間件就是一組程序模塊,用以大大減少開(kāi)發(fā)一個(gè)聯(lián)機(jī)交易處理系統(tǒng)所需的編程量。x/open 組織專(zhuān)門(mén)定義了分布式交易處理的標(biāo)準(zhǔn)及參考模型,把一個(gè)聯(lián)機(jī)交易系統(tǒng)劃分成資源管理(rm) 、交易管理(tm)和應(yīng)用(ap)三部分,定義了應(yīng)用程序、交易管理器、多個(gè)資源管理器是如何協(xié)同工作的。資源管理器是指數(shù)據(jù)庫(kù)和文件系統(tǒng),交易管理器可歸入交易中間件。交易中間件管理由應(yīng)用聲明和提交的交易,并通過(guò)兩階段提交協(xié)議等方式保證分布式交易的完整性、控制并發(fā)、實(shí)現(xiàn)交易路由和均衡負(fù)載。交易
37、中間件理論上相對(duì)成熟,功能和性能界定清晰,但基本上適用于聯(lián)機(jī)交易系統(tǒng),如銀行業(yè)務(wù)系統(tǒng)、定票系統(tǒng)等。盡管交易信息也是消息,交易中間件也是基于消息的傳輸,也可支持同步和異步方式,但與消息中間件的定位差距較大,屬于一種較專(zhuān)用的中間件。(六)對(duì)象中間件云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)- 9 -面向?qū)ο蟮募夹g(shù)一直是軟件界努力追求的目標(biāo),傳統(tǒng)的對(duì)象技術(shù)通過(guò)封裝、繼承及多態(tài)提供了良好的代碼重用功能。但是這些對(duì)象只存在一個(gè)程序中,外面的世界并不知道它們的存在,也無(wú)法訪(fǎng)問(wèn)它們。面向?qū)ο蟮闹虚g件就是要解決這些問(wèn)題,它提供一個(gè)標(biāo)準(zhǔn)的構(gòu)件框架,能使不同的廠(chǎng)家的軟件通過(guò)不同的地址空
38、間、網(wǎng)絡(luò)和操作系統(tǒng)互相交互訪(fǎng)問(wèn)。該構(gòu)件的具體實(shí)現(xiàn)、位置及所依附的操作系統(tǒng)對(duì)客戶(hù)來(lái)說(shuō)都是透明的。例如,我們可以通過(guò)簡(jiǎn)單的組裝或擴(kuò)展已有的構(gòu)件就可以建立一個(gè)客戶(hù)機(jī)/服務(wù)器結(jié)構(gòu)的信息系統(tǒng)。面向?qū)ο蟮闹虚g件技術(shù)的目標(biāo)就是為軟件用戶(hù)及開(kāi)發(fā)者提供一種應(yīng)用級(jí)的即插即用的互操作性,就象現(xiàn)在使用集成塊和擴(kuò)展板一樣。有關(guān)對(duì)象中間件的標(biāo)準(zhǔn)相繼問(wèn)世,像 omg 組織的 corba、microsoft 的com 以及 ibm 公司的 som 等,這些標(biāo)準(zhǔn)都極大地促進(jìn)了對(duì)象中間件技術(shù)的發(fā)展,隨著面向?qū)ο蟮膽?yīng)用系統(tǒng)的逐漸增長(zhǎng),對(duì)象中間件的需求也在逐年加大。對(duì)象技術(shù)的優(yōu)勢(shì)和對(duì)象中間件的標(biāo)準(zhǔn)化,促使對(duì)象中間件的功能將最終涵蓋其
39、它幾類(lèi)中間件的功能而成為中間件產(chǎn)品的主流。不論各種中間件他們的目的和功能有多少不同,但是它們都可以向上提供不同形式的通訊服務(wù),包括同步、排隊(duì)、訂閱發(fā)布、廣播等等,在這些基本的通訊平臺(tái)之上,可構(gòu)筑各種框架,為應(yīng)用程序提供不同領(lǐng)域內(nèi)的服務(wù),如事務(wù)處理監(jiān)控器、分布數(shù)據(jù)訪(fǎng)問(wèn)、對(duì)象事務(wù)管理器 otm 等。平臺(tái)為上層應(yīng)用屏蔽了異構(gòu)平臺(tái)的差異,而其上的框架又定義了相應(yīng)領(lǐng)域內(nèi)的應(yīng)用的系統(tǒng)結(jié)構(gòu)、標(biāo)準(zhǔn)的服務(wù)組件等,用戶(hù)只需告訴框架所關(guān)心的事件,然后提供處理這些事件的代碼。當(dāng)事件發(fā)生時(shí),框架則會(huì)調(diào)用用戶(hù)的代碼。用戶(hù)代碼不用調(diào)用框架,用戶(hù)程序也不必關(guān)心框架結(jié)構(gòu)、執(zhí)行流程、對(duì)系統(tǒng)級(jí) api 的調(diào)用等,所有這些由框架負(fù)責(zé)
40、完成。因此,基于中間件開(kāi)發(fā)的應(yīng)用具有良好的可擴(kuò)充性、易管理性、高可用性和可移植性。3.23.2 消息中間件消息中間件的概述的概述3.2.1 消息中間件的由來(lái)消息中間件的由來(lái)在分布式應(yīng)用中,corba、dcom、rmi 等 rpc 中間件技術(shù)已廣泛應(yīng)用于各個(gè)領(lǐng)域。但是面對(duì)規(guī)模和復(fù)雜度都越來(lái)越高的分布式系統(tǒng),這些技術(shù)也顯示出其局限性:13(1)同步通信:客戶(hù)發(fā)出調(diào)用后,必須等待服務(wù)對(duì)象完成處理并返回結(jié)果后才能繼續(xù)執(zhí)行;(2)客戶(hù)和服務(wù)對(duì)象的生命周期緊密耦合:客戶(hù)進(jìn)云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-10 -程和服務(wù)對(duì)象進(jìn)程都必須正常運(yùn)行;如果由于服務(wù)對(duì)象崩潰或者
41、網(wǎng)絡(luò)故障導(dǎo)致客戶(hù)的請(qǐng)求不可達(dá),客戶(hù)會(huì)接收到異常;(3)點(diǎn)對(duì)點(diǎn)通信:客戶(hù)的一次調(diào)用只發(fā)送給某個(gè)單獨(dú)的目標(biāo)對(duì)象。面向消息的中間件(message oriented middleware,mom)較好的解決了以上問(wèn)題。發(fā)送者將消息發(fā)送給消息服務(wù)器,消息服務(wù)器將消息存放在若干隊(duì)列中,在合適的時(shí)候再將消息轉(zhuǎn)發(fā)給接收者。這種模式下,發(fā)送和接收是異步的,發(fā)送者無(wú)需等待;二者的生命周期未必相同:發(fā)送消息的時(shí)候接收者不一定運(yùn)行,接收消息的時(shí)候發(fā)送者也不一定運(yùn)行;一對(duì)多通信:對(duì)于一個(gè)消息可以有多個(gè)接收者。3.2.2 消息中間件的定義消息中間件的定義消息傳輸中間件(message oriented middlewa
42、re,mom)是中間件中的一種。消息中間件也稱(chēng)為消息代理中間件或通信中間件,它是依據(jù)消息傳輸或消息隊(duì)列的原理來(lái)工作的。它能夠簡(jiǎn)化應(yīng)用之間數(shù)據(jù)的傳輸,提供可靠的,跨平臺(tái)的消息傳輸手段3。消息中間件支持同步和異步兩種通信模式,其中異步通信模式是基于消息隊(duì)列轉(zhuǎn)發(fā)機(jī)制的。消息隊(duì)列一般提供多協(xié)議支持和其他系統(tǒng)管理服務(wù),完成可靠的,可擴(kuò)展的異構(gòu)環(huán)境中的通信12。一般來(lái)說(shuō),消息隊(duì)列采用分布式計(jì)算模型來(lái)實(shí)現(xiàn)同步和異步交互。消息中間簡(jiǎn)化了應(yīng)用之間數(shù)據(jù)的傳輸,屏蔽底層異構(gòu)操作系統(tǒng)和網(wǎng)絡(luò)平臺(tái),提供一致的通訊標(biāo)準(zhǔn)和應(yīng)用開(kāi)發(fā),確保分布式計(jì)算網(wǎng)絡(luò)環(huán)境下可靠的、跨平臺(tái)的信息傳輸和數(shù)據(jù)交換。它基于消息隊(duì)列的存儲(chǔ)-轉(zhuǎn)發(fā)機(jī)制,并
43、提供特有的異步傳輸機(jī)制,能夠基于消息傳輸和異步事務(wù)處理實(shí)現(xiàn)應(yīng)用整合與數(shù)據(jù)交換。如果沒(méi)有消息中間件完成信息交換,應(yīng)用開(kāi)發(fā)者為了傳輸數(shù)據(jù),必須要學(xué)會(huì)如何用網(wǎng)絡(luò)和操作系統(tǒng)軟件的功能,編寫(xiě)相應(yīng)的應(yīng)用程序來(lái)發(fā)送和接收信息,且交換信息沒(méi)有標(biāo)準(zhǔn)方法,每個(gè)應(yīng)用必須進(jìn)行特定的編程從而和多平臺(tái)、不同環(huán)境下的一個(gè)或多個(gè)應(yīng)用通信12。例如,為了實(shí)現(xiàn)網(wǎng)絡(luò)上不同主機(jī)系統(tǒng)間的通信,將要求具備在網(wǎng)絡(luò)上如何交換信息的知識(shí)(比如用 tcp/ip 的 socket 程序設(shè)計(jì));為了實(shí)現(xiàn)同一主機(jī)內(nèi)不同進(jìn)程之間的通訊,將要求具備操作系統(tǒng)的消息隊(duì)列或命名管道(pipes)等知識(shí)。由此可見(jiàn),消息中間件在提供相應(yīng)的底層通信功能的同時(shí),也大大
44、減輕了開(kāi)發(fā)人員的開(kāi)發(fā)過(guò)程。3.2.3 消息中間件的關(guān)鍵技術(shù)消息中間件的關(guān)鍵技術(shù)云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-11 -消息隊(duì)列技術(shù)是消息中間件中的關(guān)鍵技術(shù)。消息隊(duì)列是分布式應(yīng)用間交換信息的一種技術(shù)。消息隊(duì)列可駐留在內(nèi)存或磁盤(pán)上,隊(duì)列存儲(chǔ)消息直到它們被應(yīng)用程序讀走。通過(guò)消息隊(duì)列,應(yīng)用程序可獨(dú)立地執(zhí)行-它們不需要知道彼此的位置、或在繼續(xù)執(zhí)行前不需要等待接收程序接收此消息。在分布式計(jì)算環(huán)境中,為了集成分布式應(yīng)用,開(kāi)發(fā)者需要對(duì)異構(gòu)網(wǎng)絡(luò)環(huán)境下的分布式應(yīng)用提供有效的通信手段。為了管理需要共享的信息,對(duì)應(yīng)用提供公共的信息交換機(jī)制是重要的。消息隊(duì)列為構(gòu)造以同步或異步方式
45、實(shí)現(xiàn)的分布式應(yīng)用提供了松耦合方法。消息隊(duì)列的 api 調(diào)用被嵌入到新的或現(xiàn)存的應(yīng)用中,通過(guò)消息發(fā)送到內(nèi)存或基于磁盤(pán)的隊(duì)列或從它讀出而提供信息交換。消息隊(duì)列可用在應(yīng)用中以執(zhí)行多種功能,比如要求服務(wù)、交換信息或異步處理等。3.2.4 sun 對(duì)消息中間件的貢獻(xiàn)對(duì)消息中間件的貢獻(xiàn) jms在 jms 規(guī)范還沒(méi)有推出以前,就已經(jīng)存在了一些消息中間件產(chǎn)品。其中比較重要的 mom 系統(tǒng)包括 ibm 的 mq series、microsoft 的 msmq 和 bea 的messageq 等。由于沒(méi)有一個(gè)通用的標(biāo)準(zhǔn),這些系統(tǒng)很難實(shí)現(xiàn)互操作和無(wú)縫連接。java message service(jms)是 sun
46、 提出的旨在統(tǒng)一各種 mom 系統(tǒng)接口的規(guī)范,它包含點(diǎn)對(duì)點(diǎn)(point to point,ptp)和發(fā)布/訂閱(publish/subscribe,pub/sub)兩種消息模型,提供可靠消息傳輸、事務(wù)和消息過(guò)濾等機(jī)制16。java 消息服務(wù)(java message service,jms)提供了一致的 api 集合,讓開(kāi)發(fā)人員可以訪(fǎng)問(wèn)許多消息通信中間件產(chǎn)品的公共特性。3.3 jms 簡(jiǎn)介簡(jiǎn)介3.3.1 jms 概述概述java 消息服務(wù)(java message service,jms)是 j2ee (java 2 enterprise edition) 套件的一部分,它提供了標(biāo)準(zhǔn) api,
47、java 開(kāi)發(fā)人員可以使用這些 api 來(lái)訪(fǎng)問(wèn)企業(yè)消息系統(tǒng)的共同特性16。java 消息服務(wù)定義了 java 中訪(fǎng)問(wèn)消息中間件的接口。jms 只是接口,并沒(méi)有給予實(shí)現(xiàn),實(shí)現(xiàn) jms 接口的消息中間件稱(chēng)為 jms 實(shí)現(xiàn)(jms provider)。jms 支持發(fā)布/訂閱和點(diǎn)對(duì)點(diǎn)模型,并允許創(chuàng)建由任意 java 對(duì)象組成的消息類(lèi)型。3.3.2 jms 的目標(biāo)的目標(biāo)云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-12 -jms 的基本設(shè)計(jì)目標(biāo)是為了提供一組一致的接口,消息傳遞系統(tǒng)客戶(hù)端可以獨(dú)立地使用這些接口,而不必關(guān)心基礎(chǔ)消息系統(tǒng)的提供商。這樣,客戶(hù)端應(yīng)用程序不僅可以跨計(jì)算機(jī)
48、體系結(jié)構(gòu)和操作系統(tǒng)進(jìn)行移植,而且也可以跨消息傳輸產(chǎn)品進(jìn)行平臺(tái)無(wú)關(guān)的移植。使用 jms 的客戶(hù)端應(yīng)用程序?qū)⒄9ぷ?,而不用在所有符?jms 的消息傳遞系統(tǒng)上做修改。同時(shí),jms 也被設(shè)計(jì)成最小化的消息傳遞系統(tǒng),jms 提供商為其產(chǎn)品實(shí)現(xiàn) jms api 所規(guī)定的工作;提供了普通消息傳遞系統(tǒng)的大多數(shù)功能。因此,許多消息系統(tǒng)提供商已經(jīng)將它們的產(chǎn)品適配成為 jms 系統(tǒng),允許 java 訪(fǎng)問(wèn)它們系統(tǒng)所提供的功能。3.3.3 jms 的體系結(jié)構(gòu)的體系結(jié)構(gòu)一個(gè)完整的 jms 應(yīng)用程序是由以下部分組成的6:jms 實(shí)現(xiàn)(jms provider),它是一個(gè)實(shí)現(xiàn)了 jms 接口并提供管理和控制能力的消息通信
49、系統(tǒng)。jms 客戶(hù)端是使用 java 編程語(yǔ)言編寫(xiě)的創(chuàng)建和消費(fèi)消息的程序或組件。消息是在 jms 客戶(hù)之間用于交流信息的對(duì)象。受管對(duì)象(administered object)是由管理員為客戶(hù)使用而創(chuàng)建的預(yù)先設(shè)置jms 對(duì)象(preconfigured jms object)。主要有兩個(gè)受管對(duì)象:目的域(destination)和連接工廠(chǎng)(connection factory)。如圖 3-2 展示了上述對(duì)象的交互情況。管理員利用管理工具綁定目的域和連接工廠(chǎng)到 jndi(java naming and directory interface)命名空間。然后,jms 客戶(hù)就能夠查找該命名空間內(nèi)的受
50、管對(duì)象,而后通過(guò) jms 實(shí)現(xiàn)建立一個(gè)到這些對(duì)象的邏輯連接。 圖 3-2 jms api 的體系結(jié)構(gòu)云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-13 -3.3.4 jms 的基本概念的基本概念 消息通信模式消息通信模式j(luò)ms 規(guī)范定義了兩種消息通信模式:點(diǎn)對(duì)點(diǎn)(point-to-point,ptp)通信模式和發(fā)布者/訂閱者(pub/sub)通信模式。圖 3-3 jms 點(diǎn)對(duì)點(diǎn)通信模式如圖 3-3 所示,ptp(point-to-point)模型是基于隊(duì)列的,發(fā)送方發(fā)消息到隊(duì)列(queue),接收方從隊(duì)列接收消息,隊(duì)列的存在使得消息的異步傳輸成為可能。和
51、郵件系統(tǒng)中的郵箱一樣,隊(duì)列可以包含各種消息,jms provider 提供工具管理隊(duì)列的創(chuàng)建、刪除。jms ptp 模型定義了客戶(hù)端如何向隊(duì)列發(fā)送消息,從隊(duì)列接收消息,瀏覽隊(duì)列中的消息。如圖 3-4 所示,jms pub/sub 模型定義了如何向一個(gè)內(nèi)容節(jié)點(diǎn)發(fā)布和訂閱消息,這些節(jié)點(diǎn)被稱(chēng)作主題(topic)。主題可以被認(rèn)為是消息的傳輸中介,發(fā)布者(publisher)發(fā)布消息到主題,訂閱者(subscribe) 從主題訂閱消息。主題使得消息訂閱者和消息發(fā)布者保持互相獨(dú)立,不需要接觸即可保證消息的傳送。圖 3-4 jms pub/sub 通信模式云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms
52、服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-14 - jms 消息模型消息模型在 jms 中,消息通常是由以下幾部分組成:消息頭,屬性,消息體。消息頭(header) 消息頭包含消息的識(shí)別信息和路由信息,消息頭包含一些標(biāo)準(zhǔn)的屬性如:jmsdestination, jmsmessageid 等。具體的消息頭如表 3-1。表 3-1 jms 消息頭消息頭由誰(shuí)來(lái)設(shè)置jmsdestinationsend 或 publish 方法jmsdeliverymodesend 或 publish 方法jmsexpirationsend 或 publish 方法jmsprioritysend 或 publish 方法jms
53、messageidsend 或 publish 方法jmstimestampsend 或 publish 方法jmscorrelationid客戶(hù)jmsreplyto客戶(hù)jmstype客戶(hù)jmsredeliveredjms provider屬性(properties) 除了消息頭中定義好的標(biāo)準(zhǔn)屬性外,jms 提供一種機(jī)制增加新屬性到消息頭中,這種新屬性包含以下幾種: 1. 應(yīng)用需要用到的屬性; 2. 消息頭中原有的一些可選屬性; 3. jms provider 需要用到的屬性。 標(biāo)準(zhǔn)的 jms 消息頭包含以下屬性, 如表 3-2 所示。表 3-2 jms 消息屬性jmsdestination消
54、息發(fā)送的目的地jmsdeliverymode傳遞模式, 有兩種模式: persistent 和non_persistent,persistent 表示該消息一定要被送到目的地,否則會(huì)導(dǎo)致應(yīng)用錯(cuò)誤。non_persistent 表示偶然丟失該消息是被允許的,這兩種模式使開(kāi)發(fā)者可以在消息傳遞的可靠性和吞吐量之間找到平衡點(diǎn)。jmsmessageid唯一識(shí)別每個(gè)消息的標(biāo)識(shí),由 jms provider 產(chǎn)生。jmstimestamp一個(gè)消息被提交給 jms provider 到消息被發(fā)出的時(shí)間。jmscorrelationid用來(lái)連接到另外一個(gè)消息,典型的應(yīng)用是在回復(fù)消息中連接到原消息。jmsrepl
55、yto提供本消息回復(fù)消息的目的地址jmsredelivered如果一個(gè)客戶(hù)端收到一個(gè)設(shè)置了 jmsredelivered 屬性的消息,則表示可能該客戶(hù)端曾經(jīng)在早些時(shí)候收到過(guò)該云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-15 -消息,但并沒(méi)有簽收(acknowledged)。jmstype消息類(lèi)型的識(shí)別符。jmsexpiration消息過(guò)期時(shí)間,等于 queuesender 的 send 方法中的timetolive 值或 topicpublisher 的 publish 方法中的timetolive 值加上發(fā)送時(shí)刻的 gmt 時(shí)間值。如果timetolive 值等于
56、零,則 jmsexpiration 被設(shè)為零,表示該消息永不過(guò)期。如果發(fā)送后,在消息過(guò)期時(shí)間之后消息還沒(méi)有被發(fā)送到目的地,則該消息被清除。jmspriority消息優(yōu)先級(jí),從 0-9 十個(gè)級(jí)別,0-4 是普通消息,5-9 是加急消息。jms 不要求 jms provider 嚴(yán)格按照這十個(gè)優(yōu)先級(jí)發(fā)送消息,但必須保證加急消息要先于普通消息到達(dá)。消息體(body) jms api 定義了 5 種消息體格式,也叫消息類(lèi)型,你可以使用不同形式發(fā)送接收數(shù)據(jù)并可以兼容現(xiàn)有的消息格式,下面表 3-3 描述這 5 種類(lèi)型:表 3-3 jms 消息類(lèi)型消息類(lèi)型消息體textmessagejava.lang.st
57、ring 對(duì)象,如 xml 文件內(nèi)容mapmessage名/值對(duì)的集合,名是 string 對(duì)象,值類(lèi)型可以是 java任何基本類(lèi)型bytesmessage字節(jié)流streammessagejava 中的輸入輸出流objectmessagejava 中的可序列化對(duì)象3.3.5 jms 的的 apijms 支持兩種消息類(lèi)型 ptp 和 pub/sub,分別稱(chēng)作:ptp domain 和pub/sub domain,這兩種接口都繼承統(tǒng)一的 jms 父接口,jms 主要接口如表 3-4所示。其中,connectionfactory :連接工廠(chǎng),jms 用它創(chuàng)建連接; connection :jms 客
58、戶(hù)端到 jms provider 的連接; destination :消息的目的地; session: 一個(gè)發(fā)送或接收消息的會(huì)話(huà); messageproducer: 由 session 對(duì)象創(chuàng)建的用來(lái)發(fā)送消息的對(duì)象; messageconsumer: 由 session 對(duì)象創(chuàng)建的用來(lái)接收消息的對(duì)象。云南大學(xué)碩士學(xué)位論文 基于 jmx 框架的 jms 服務(wù)器的設(shè)計(jì)和實(shí)現(xiàn)-16 -表 3-4 jms 主要接口jms 父接口ptppub/subconnectionfactoryqueueconnectionfactorytopicconnectionfactoryconnectionqueueco
59、nnectiontopicconnectiondestinationqueuetopicsessionqueuesessiontopicsessionmessageproducerqueuesendertopicpublishermessageconsumerqueuereceiver,queuebrowsertopicsubscriber3.3.6 利用利用 jms 進(jìn)行客戶(hù)端開(kāi)發(fā)的主要步驟進(jìn)行客戶(hù)端開(kāi)發(fā)的主要步驟下面我們以如何建立一個(gè)異步消息客戶(hù)端來(lái)說(shuō)明怎么利用 jms 來(lái)創(chuàng)建消息應(yīng)用的客戶(hù)端的基本步驟。 創(chuàng)建連接創(chuàng)建連接連接為客戶(hù)端提供了對(duì)基礎(chǔ)消息傳遞系統(tǒng)的訪(fǎng)問(wèn),并執(zhí)行資源
60、分配和管理。連接是使用 connectionfactory 創(chuàng)建的,而 connectionfactory 通常是使用 jndi 查找得到的。下面這些代碼展示了創(chuàng)建連接過(guò)程中涉及的一些步驟:context messaging = new initialcontext(); / 獲得 jndi 上下文/創(chuàng)建連接工廠(chǎng)topicconnectionfactory topicconnectionfactory = (topicconnectionfactory)messaging.lookup(topicconnectionfactory);/由連接工廠(chǎng)創(chuàng)建連接topicconnection topi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代物流信息系統(tǒng)建設(shè)中的標(biāo)準(zhǔn)化問(wèn)題
- 生態(tài)文明教育在校園的實(shí)踐與推廣
- 現(xiàn)代企業(yè)綜合管理能力提升及領(lǐng)導(dǎo)力培訓(xùn)方案研究報(bào)告
- 2023三年級(jí)語(yǔ)文上冊(cè) 第一單元 習(xí)作:猜猜他是誰(shuí)說(shuō)課稿 新人教版
- Unit 2 AnimaIs Lesson 1 Enjoy the story(說(shuō)課稿)-2024-2025學(xué)年北師大版(三起)英語(yǔ)五年級(jí)上冊(cè)
- 2024秋八年級(jí)物理上冊(cè) 第1章 機(jī)械運(yùn)動(dòng) 第2節(jié) 運(yùn)動(dòng)的描述說(shuō)課稿2(新版)新人教版
- 2025仿石漆施工合同
- 13蚯蚓的家 說(shuō)課稿-2023-2024學(xué)年科學(xué)一年級(jí)下冊(cè)青島版
- 2025農(nóng)副產(chǎn)品購(gòu)銷(xiāo)結(jié)合合同樣本
- 2024-2025學(xué)年新教材高中英語(yǔ) Unit 5 On the road預(yù)習(xí) 新知早知道1說(shuō)課稿 外研版必修第二冊(cè)
- 數(shù)學(xué)-河南省三門(mén)峽市2024-2025學(xué)年高二上學(xué)期1月期末調(diào)研考試試題和答案
- 二零二五版電力設(shè)施維修保養(yǎng)合同協(xié)議3篇
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第一章運(yùn)動(dòng)技能學(xué)習(xí)與控制概述
- 固體廢棄物檢查記錄
- 工程設(shè)計(jì)費(fèi)取費(fèi)標(biāo)準(zhǔn)
- 2023年遼寧鐵道職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))試題庫(kù)含答案解析
- CAPP教學(xué)講解課件
- 自然環(huán)境的服務(wù)功能課件 高中地理人教版(2019)選擇性必修3
- 小耳畸形課件
- 精美唯美淡雅個(gè)人求職簡(jiǎn)歷模板 (7)
- 環(huán)保鐵1215物質(zhì)安全資料表MSDS
評(píng)論
0/150
提交評(píng)論