Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

全面研读 EJB 2.0

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  正像会话 bean 和实体 bean 一样,MessageDrivenBean 也是一种完备的企业级bean,但其间仍存在一些重要的区别。消息 bean 没有远程接口或本地接口。这是因为消息bean 不是 RPC 组件。它没有供 EJB 客户机调用的业务方法。消息 bean 监听虚拟消息通道(主题或队列),并使用其它 JMS 客户机发送给该通道的消息。

  各个消息 bean 构成一个 bean 类,这个类实现 MessageDrivenBean 接口和一个XML 部署描述符。下面是 MessageDrivenBean 接口的定义,所有消息 bean都必须实现这个接口。


package javax.ejb;
import javax.jms.Message;
import javax.jms.MessageListener;
public interface MessageDrivenBean extends
MessageListener{
  public void onMessage(Message message);
  public void ejbCreate();
  public void ejbRemove();
  public void
setMessageDrivenContext(MessageDrivenContext mdc);
}

  当部署了一个消息驱动的 bean 以后,它就被指派来处理特定主题或队列中的消息。JMS 客户机(Java 应用程序、bean 或本地客户机)发送的任何消息,将由消息路由器转发给消息 bean,该消息 bean 正是被指派来从该虚拟通道中接收消息的。当一条消息被发送给一个消息 bean 时,EJB 容器就会从某个池中选择该 bean 的一个实例,来处理这条消息。当 bean 实例调用其 onMessage() 方法时,它就会接收到这条消息,并能够以它认为合适的任何方式来处理这条消息。一旦这条消息被使用,则只要事务没有异常中止,这条消息都不会被传送给这个消息 bean 的任何其它实例。

  消息 bean 在某点上类似于无状态的会话 bean,即这两种 bean 在两次请求之间都不保持任何状态。因此,消息驱动的 bean 是无状态的,但是,就像无状态的会话 bean一样,它们也可以有实例变量,这些变量在这个 bean 实例的整个生存期内均保持。

  对消息 bean 的最后一点说明是,理解这样一个事实是很重要的,即 bean 使用的消息不一定要是由其它 bean 所产生的。消息 bean 可以使用由符合 JMS的厂商提供的任何主题或队列中的消息。消息 bean 使用的消息可以来自其它 bean(会话 bean、实体bean 或消息 bean)、非 EJB 的 Java 应用程序、或者甚至非 Java的应用程序(如果其供应商符合 JMS)。例如,遗留应用程序可能使用 IBM 的 MQSeries向队列发送消息,而该消息既可以由其它遗留应用程序使用,同样可以由消息 bean 使?

  结论

  与以前的规范相比,Enterprise JavaBeans 2.0 中作了一些相当大的更改。新的CMP 模型比以前的模型要灵活得多,它允许各种实体为复杂的对象图建立模型,而同又提跨容器的更大的可移植性。人们迫切地期待着为查找和选择操作定义一种通用的查询语言,而它也将有助于提高可移植性。

  这种新的 MessageDrivenBean 类型将有助于使这种强大的消息收发范例成为众人瞩目的焦点,就像 EJB 那样。消息收发在分布式的混合计算中是一个极其重要的组成部分,将它包括在 EJB 内就是其重要性的一个证明。

  在写这篇文章时,EJB 2.0 刚刚作为公开草案发布,这意味着在它成为一个最终规范之前仍有可能更改。如果更改对此处提供的材料有重大影响,届时我将设法对本文作一些注释,但这个规范正在趋于稳定,所以不太可能有真正重大的更改。

  参考资料

  "A Beginner's Guide to Enterprise JavaBeans," Mark Johnson(JavaWorld,1998年 10 月):

  Richard Monson-Haefel 的 EJB 开发者网站,EJBNow.com

  EJB 2.0,规范

  Thought 的 CocoBase

  IBM 的 MQ Series

  BEA 的 WebLogic JMS Service

  Progess Sonic MQ

  Richard Monson-Haefel 所写的其它文章:

  "Create forward-compatible beans in EJB, Part 1"(JavaWorld,1999 年 12 月)

  "Create forward-compatible beans in EJB, Part 2"(JavaWorld,2000 年 1 月)

  作者简介

  Richard Monson-Haefel 是最近发布的 Enterprise JavaBeans 第二版的作者。他是OpenEJB 的首席设计师(OpenEJB 是一种开放源代码的 Enterprise JavaBeans 2.0容器),他曾经以设计师身份为 Enterprise JavaBeans、CORBA、Java RMI 以及其它Java 方案提供咨询。Monson-Haefel 还维护着一个网站,供人们讨论 EnterpriseJavaBeans 和相关的分布式计算技术。可以通过 richard.monson-haefel@javaworld.com 与Richard Monson-Haefel 联系。




 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页 1 2 3 4 5 6 7下一页


上一篇:Enterprise JavaBeans简介   下一篇:Java 2 EE开发指南(二)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
·Motorola微处理器bootloader分析与应用
·Fedora Core5 NFS服务器搭建过程介绍
·Linux系统:让内存不再泄漏的实用技巧
·新手看招 手把手教你安装VMware虚拟机
·“侵权事件” 红帽称微软企图干扰用户
·删除Linux后 如何找回Windows启动菜单
·菜鸟乐园 Linux中常见文件系统格式介绍
·Linux操作系统下IPTables配置方法详解
·实用技巧 Linux系统的经典使用技巧八则
·Linux系统文件优化及磁盘检查方法介绍
推荐文章
·Linux 指令篇:编码压缩打包--uuenco
·Linux系统初学之学习方向和方法浅谈
·CVS RCS HOWTO 原始程式码版本控制
·Linux操作系统内核启动参数详细解析
·为Linux配备Oracle 8
·自由软件不言商?
·如何远程实现为Linux服务器添加新分
·Linux 指令篇:讯息传送与信件管理--
精彩文章
·JSP 技术 -- 是友还是敌?
·建立独立于数据类型的JDBC应用
·使用iptables实现数据包过滤
·J2EE初学者需要理解的问题
·Linux中文件查找技术大全
·Servlet(一)
·redhat7.1gnome汉化及chinput的安装
·Linux操作系统下如何删除Windows分
·GTK+/Gnome应用开发
·一个用JSP写的论坛的实例(二)
·RedHat系统服务控制机制详解
·总结: Java与C的不同点
·用PHP和MySQL构建一个数据库驱动的
·Linux 指令篇:档案目录管理--more
·Python入门(7)
·Linux 指令篇:讯息传送与信件管理--
·Linux网络安全之经验谈(3)
·非标准端口服务的识别
·linux下乱码问题的终极解决方法
·Tcl编程简介(五)之内置命令集
·不同Web主机上的Servlet之间数据对
·Java 2 EE开发指南(二)
·功能控制完备的PHP上载程序
·基于IPsec的虚拟专用网--原理篇
·基于Linux2.4内核的透明代理配置方
·Linux 指令篇:字串处理--tr
Power by linux-cn.com 粤ICP备05006655号