分享
 
 
 

获得消息:J2EE 1.4 中的消息

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

获得消息: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()

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有