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

首頁 > 學院 > 開發設計 > 正文

獲得消息:J2EE 1.4 中的消息

2019-11-18 13:52:48
字體:
來源:轉載
供稿:網友

  獲得消息:J2EE 1.4 中的消息

隨著越來越多的應用服務器符合 J2EE 規范,java 開發人員必須要考慮如何以及是否移植他們的 J2EE 1.3 兼容的代碼。在本文中,David Currie 對 J2EE 規范中一個特定領域的改變進行了分析:消息。您將明白哪些內容需要改變、哪些可保持原樣,以及有哪些新的機會在等著您。
在本文中,我將概述支持 1.4 版 J2EE 規范引入的消息所需的改變。我將非凡分析 JMS 1.1 的需求以及使用時的新限制、與消息目標有關的新概念、以及 EJB 規范 2.1 版本為消息驅動 bean 所帶來的顯著變化。這些內容對于這些開發人員和治理人員非凡有用:他們熟悉 J2EE 1.3 中的消息、并且希望編寫新的應用程序或者將現有消息應用程序移植到兼容 J2EE 1.4 的應用服務器上。

JMS 1.1
兼容 J2EE 的應用服務器現在需要支持 1.1 版的 Java 消息服務(Java Message Server,JMS)規范,這也許是新版本 J2EE 規范中最明顯的改變。JMS 1.1 完全向后兼容 J2EE 1.3 規范所要求的 JMS 1.1,所以應當不需要改變現有的應用程序。JMS 1.1 引入了統一消息域,在 Bobby Woolf 的 這篇文章 中對它做了具體的討論。值得強調的是,除非需要向后兼容性,否則沒有理由用老的隊列和主題接口編寫新的 JMS 應用程序。新的應用程序應當只使用新的統一接口,如清單 1 中的例子所示。

清單 1. 展示統一 JMS 接口的例子

InitialContext context = new InitialContext();
ConnectionFactory factory =
(ConnectionFactory) context.lookup("java:comp/env/jms/cf");
Destination source =
(Destination) context.lookup("java:comp/env/jms/source");
Connection connection = factory.createConnection();
connection.start();
session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer(source);
Message message = consumer.receive();
connection.close();



正如 Bobby 在他的文章中所說的,統一接口不僅簡化了消息編程模型,它們還使應用程序可以用一個事務 Session 接收來自隊列的消息,并向主題發送消息(或者相反)。這意味著可以在同一個事務工作單元中進行發送和接收,而無需借助于 bean 或者容器治理的事務。

J2EE 對 JMS 使用的限制
像以前版本的 J2EE 規范一樣,1.4 版對 JMS 的使用有一些限制。我將在本節分析這些限制。

限制的接口
盡管許多開發人員可能不知道,但是 J2EE 規范對于 J2EE 應用程序如何使用 JMS API 總是有一些限制。例如,以下接口用于 JMS 提供者與應用服務器之間的集成(它們是在 JMS 規范中描述的 application Server Facilities 的一部分),因而不能被應用程序使用:

javax.jms.ServerSession
javax.jms.ServerSessionPool
javax.jms.ConnectionConsumer
All javax.jms.XA interfaces
限制的方法
對于那些“應用程序組件在阻止創建線程的容器中不能執行”的方法,J2EE 1.3 規范給出了讓人困惑的聲明。EJB 容器不答應應用程序創建線程,但是一個 Web 容器 可以 答應應用程序這樣做。結果,在 J2EE 1.3 中,根據所使用的 Web 容器,可以調用或者不可以調用這些方法。幸運的是,J2EE 1.4 規范刪除了這些令人困惑的說法,只是說明下列方法只能被運行在客戶容器中的應用程序所使用??換句話說,它們不會在 Web 或者 EJB 容器中調用:

javax.jms.ServerSession method setMessageListener()
javax.jms.ServerSession method getMessageListener()
javax.jms.Session method run()
javax.jms.QueueConnection method createConnectionConsumer()
javax.jms.TopicConnection method createConnectionConsumer()
javax.jms.TopicConnection method createDurableConnectionConsumer()


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福建省| 花莲县| 田林县| 安乡县| 建阳市| 宜宾县| 泽普县| 石首市| 凤城市| 西吉县| 揭东县| 仪陇县| 普洱| 景洪市| 蒙山县| 泸水县| 襄汾县| 察隅县| 乐安县| 牟定县| 双江| 浮山县| 奉化市| 沂水县| 河北区| 靖宇县| 济源市| 资源县| 会昌县| 宜兴市| 远安县| 宝应县| 手游| 遵义市| 宾阳县| 连云港市| 盐源县| 临夏市| 巴林左旗| 金坛市| 耿马|