国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

JMS 介紹及其在 EJB 2.0 中的用法

2019-11-18 12:34:05
字體:
供稿:網(wǎng)友

  MessageDrivenBean 在 EJB 2.0 中,對規(guī)范的一個(gè)基礎(chǔ)性更改是添加了一種全新的企業(yè)級 bean 類型,即 MessageDrivenBean。MessageDrivenBean 專門設(shè)計(jì)來處理入網(wǎng)的 JMS 消息。對于許多開發(fā)人員來說,JMS 是一種新的范例,所以本文將花一些時(shí)間逐步說明對 JMS 的理解,以及它們在 EJB 2.0 中的用法。
  
  什么是 JMS? JMS 是一種與廠商無關(guān)的 API,用來訪問消息收發(fā)系統(tǒng)。它類似于 JDBC (java Database Connectivity):這里,JDBC 是可以用來訪問許多不同關(guān)系數(shù)據(jù)庫的 API,而 JMS 則提供同樣與廠商無關(guān)的訪問方法,以訪問消息收發(fā)服務(wù)。許多廠商目前都支持 JMS,包括 IBM 的 MQSeries、BEA 的 Weblogic JMS service 和 PRogress 的 SonicMQ,這只是幾個(gè)例子。
  
  JMS 使您能夠通過消息收發(fā)服務(wù)(有時(shí)稱為消息中介程序或路由器)從一個(gè) JMS 客戶機(jī)向另一個(gè) JML 客戶機(jī)發(fā)送消息。消息是 JMS 中的一種類型對象,由兩部分組成:報(bào)頭和消息主體。報(bào)頭由路由信息以及有關(guān)該消息的元數(shù)據(jù)組成。消息主體則攜帶著應(yīng)用程序的數(shù)據(jù)或有效負(fù)載。根據(jù)有效負(fù)載的類型來劃分,可以將消息分為幾種類型,它們分別攜帶:簡單文本 (TextMessage)、可序列化的對象 (ObjectMessage)、屬性集合 (MapMessage)、字節(jié)流 (BytesMessage)、原始值流 (StreamMessage),還有無有效負(fù)載的消息 (Message)。
  
  消息收發(fā)系統(tǒng)是異步的,也就是說,JMS 客戶機(jī)可以發(fā)送消息而不必等待回應(yīng)。比較可知,這完全不同于基于 RPC 的(基于遠(yuǎn)程過程的)系統(tǒng),如 EJB 1.1、CORBA 和 Java RMI 的引用實(shí)現(xiàn)。在 RPC 中,客戶機(jī)調(diào)用服務(wù)器上某個(gè)分布式對象的一個(gè)方法。在方法調(diào)用返回之前,該客戶機(jī)被阻塞;該客戶機(jī)在可以執(zhí)行下一條指令之前,必須等待方法調(diào)用結(jié)束。在 JMS 中,客戶機(jī)將消息發(fā)送給一個(gè)虛擬通道(主題或隊(duì)列),而其它 JMS 客戶機(jī)則預(yù)訂或監(jiān)聽這個(gè)虛擬通道。當(dāng) JMS 客戶機(jī)發(fā)送消息時(shí),它并不等待回應(yīng)。它執(zhí)行發(fā)送操作,然后繼續(xù)執(zhí)行下一條指令。消息可能最終轉(zhuǎn)發(fā)到一個(gè)或許多個(gè)客戶機(jī),這些客戶機(jī)都不需要作出回應(yīng)。
  
  EJB 2.0 中的 JMS EJB 2.0 以兩種方式支持 JMS 的集成:作為一種 bean 可用的資源,和作為一個(gè) MessageDrivenBean。當(dāng)將 JMS 用作一種資源時(shí),使用 JMS API 的 bean 就是消息的產(chǎn)生者或發(fā)送者。在這種情況下,bean 將消息發(fā)送給稱為主題或隊(duì)列的虛擬通道。另一方面,MessageDrivenBean 則是消息的使用者或接收者。它監(jiān)聽特定的虛擬通道(主題或隊(duì)列),并處理發(fā)送給該通道的消息。為了更好地理解消息產(chǎn)生者和消息使用者的作用,用 sessionBean bean 來發(fā)送一條使用 JMS 的消息,然后使用一個(gè)新的 MessageDrivenBean 來使用該同一條消息。
  
  作為 EJB 2.0 資源的 JMS 會(huì)話 bean 和實(shí)體 bean 都是基于 RPC 的組件,為了將各種事務(wù)性的組件裝配到一起,這是一種卓越的體系結(jié)構(gòu)。但是,在某些情況下,RPC 的同步性質(zhì)會(huì)成為一種障礙,這正是 EJB 1.1 中將對 JMS API 的訪問作為一種資源包括在內(nèi)的原因。利用 JNDI 環(huán)境命名的上下文,bean 可以獲得一個(gè) JMS 工廠,并將一條異步消息發(fā)送給主題或隊(duì)列(也從 JNDI 獲得),而不必等待回應(yīng)。下面是 ShoppingCart bean 的一個(gè)例子,它使用 JMS 將 Order 的具體信息發(fā)送給消息收發(fā)主題

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 上杭县| 曲水县| 彭阳县| 讷河市| 皮山县| 洞口县| 惠东县| 四会市| 汾西县| 运城市| 海南省| 正定县| 玛曲县| 富蕴县| 西乌珠穆沁旗| 筠连县| 桐乡市| 乐山市| 昔阳县| 开远市| 宁强县| 河南省| 林口县| 东阿县| 罗山县| 买车| 安塞县| 缙云县| 林周县| 广西| 雷波县| 游戏| 象州县| 彭泽县| 皮山县| 武定县| 郴州市| 西乡县| 玉龙| 云梦县| 义乌市|