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

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

深入探討EJB中新的消息驅(qū)動(dòng)組件

2019-11-17 06:12:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友


  提要:我們可以使用MessageDrivenBean(消息驅(qū)動(dòng)組件),在企業(yè)級(jí)的應(yīng)用程序中進(jìn)行異步的消息傳送。

  引言:EnterPRise javaBeans(EJB)1.1版本中定義了兩種組件類型—session組件和entity組件。客戶端對(duì)象可以同步調(diào)用EJB1.1的這兩種組件的方法,然而,為了繼續(xù)Message Oriented Middleware(MOM,面向?qū)ο蟮闹虚g件)和Java Message Service(JMS,Java消息服務(wù))的優(yōu)點(diǎn)的需要,EJB框架中也相應(yīng)的應(yīng)當(dāng)加入異步的消息通訊機(jī)制,所以,在EJB2.0中就定義了第三種組件類型----MessageDrivenBean(消息驅(qū)動(dòng)組件)

  MessageDrivenBean兼?zhèn)銭JB和JMS的功能,當(dāng)然,假如您想要消息操作技術(shù),那么您大可只使用JMS就行了,但是新的消息驅(qū)動(dòng)組件MessageDrivenBean提供了消息通訊的新的可能性。那么,這些組件如何整合到一個(gè)應(yīng)用程序服務(wù)器框架中?他們的功能又如何擴(kuò)大了過(guò)去JMS服務(wù)器的使用范圍?讓我們看下文吧!

  EJB和JMS

  前面我們已經(jīng)說(shuō)過(guò)了,EJB1.1種為開(kāi)發(fā)者定義了兩個(gè)企業(yè)級(jí)組件類型-----session和entity組件。session組件通常實(shí)現(xiàn)一些商業(yè)邏輯并且不能在多客戶端共用。Entity組件則描述一個(gè)實(shí)體的面向?qū)ο蟮母拍睿@個(gè)實(shí)體往往存在于像數(shù)據(jù)庫(kù)那樣固定的存儲(chǔ)容器中。在這兩種組件模型中,使用本地的或遠(yuǎn)程的接口來(lái)簡(jiǎn)化客戶端的交互作用。按照定義,這種交互作用是嚴(yán)格的同步的。舉例來(lái)說(shuō),通過(guò)一個(gè)方法調(diào)用把一個(gè)請(qǐng)求發(fā)送給組件,然后服務(wù)器對(duì)象返回一個(gè)響應(yīng)。


  然而,在企業(yè)版應(yīng)用程序的范圍中,也經(jīng)常需要異步的消息傳遞,比方說(shuō),一個(gè)客戶可能想發(fā)給服務(wù)器一條信息,但是并不需要或者不想要服務(wù)器做出應(yīng)答,這時(shí),客戶端就沒(méi)有必要等待服務(wù)器對(duì)象處理請(qǐng)求。對(duì)于客戶端應(yīng)用程序來(lái)說(shuō),在確保消息最終能夠到達(dá)服務(wù)器并被正常處理的前提下,提交一條消息然后繼續(xù)處理本身的事務(wù),將會(huì)在很大的程度上提高效率。

  能夠處理異步消息的能力的Java技術(shù)可以在Java Message Service(JMS)中找到,JMS原本就是被開(kāi)發(fā)來(lái)提供傳統(tǒng)的Message Oriented Middleware(MOM)產(chǎn)品的一個(gè)標(biāo)準(zhǔn)Java接口。

  現(xiàn)在,一些公司開(kāi)發(fā)出了一整套新一代輕量級(jí)高效的純Java的JMS產(chǎn)品,這些產(chǎn)品是開(kāi)發(fā)者能夠建立JMS連接來(lái)發(fā)布或從其它應(yīng)用程序組件中接受消息。下面的例程給出了與一個(gè)JMS提供者接口的必要步驟:


  代碼段一:預(yù)備客戶端

  客戶端應(yīng)用程序使用了帶有JMS 主題的MessageListener來(lái)接受和處理消息。

import javax.jms.*;

/**

*一個(gè)例程,演示如何取得一個(gè)JMS

*連接并取得一個(gè)消息監(jiān)聽(tīng)者。在本例中

*我們將獲取一個(gè)與一個(gè)JMS主題的連接

*/

public class JMSSample {

public static void main (String args[])

{

InitialContext context = new InitialContext();

// 查找主題

Topic topic (Topic)context.lookup("MyTopic");

file://取得我們創(chuàng)建JMS連接時(shí)所要用到的連接創(chuàng)建器

TopicConnectionFactory tcf =

(TopicConnectionFactory)context.lookup(

"TopicConnectionFactory");

// 創(chuàng)建JMS連接

TopicConnection conn = tcf.createTopicConnection();

// 從連接中創(chuàng)建JMS session。

// 這樣我們就可以創(chuàng)建一個(gè)非事務(wù)處理、AUTO_ACKNOWLEDGE的連接

TopicSession session = conn.createTopicSession(

false, Session.AUTO_ACKNOWLEDGE);

// 創(chuàng)建主題訂閱者

TopicSubscriber subscriber =

session.createSubscriber(topic);

// 監(jiān)聽(tīng)者

subscriber.setMessageListener(myListener);



// 指出我們將要接受信息的連接


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 贵州省| 赤城县| 云和县| 三门峡市| 天长市| 怀集县| 碌曲县| 嵊泗县| 通辽市| 苗栗县| 红安县| 瑞丽市| 福州市| 清水县| 普安县| 万年县| 麻阳| 南京市| 河津市| 大冶市| 扶绥县| 商南县| 梨树县| 南平市| 安庆市| 麻城市| 九江县| 天等县| 余江县| 绵竹市| 年辖:市辖区| 兴安县| 绵竹市| 金坛市| 志丹县| 辉县市| 丰原市| 喀喇沁旗| 读书| 祁门县| 靖安县|