Chinaunix首页 | 论坛 | 博客
  • 博客访问: 431158
  • 博文数量: 125
  • 博客积分: 2838
  • 博客等级: 少校
  • 技术积分: 1410
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-05 09:45
文章分类

全部博文(125)

文章存档

2012年(13)

2011年(5)

2010年(107)

我的朋友

分类:

2010-08-26 11:26:48

MessageDrivenBean 在 EJB 2.0 中,对规范的一个基础性更改是添加了一种全新的企业级 bean 类型,即 MessageDrivenBean。MessageDrivenBean 专门设计来处理入网的 JMS 消息。对于许多开发人员来说,JMS 是一种新的范例,所以本文将花一些时间逐步说明对 JMS 的理解,以及它们在 EJB 2.0 中的用法。
  
  什么是 JMS? JMS 是一种与厂商无关的 API,用来访问消息收发系统。它类似于 JDBC (Java Database Connectivity):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA 的 Weblogic JMS service 和 Progress 的 SonicMQ,这只是几个例子。
  
  JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JML 客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本 (TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。
  
  消息收发系统是异步的,也就是说,JMS 客户机可以发送消息而不必等待回应。比较可知,这完全不同于基于 RPC 的(基于远程过程的)系统,如 EJB 1.1、CORBA 和 Java RMI 的引用实现。在 RPC 中,客户机调用服务器上某个分布式对象的一个方法。在方法调用返回之前,该客户机被阻塞;该客户机在可以执行下一条指令之前,必须等待方法调用结束。在 JMS 中,客户机将消息发送给一个虚拟通道(主题或队列),而其它 JMS 客户机则预订或监听这个虚拟通道。当 JMS 客户机发送消息时,它并不等待回应。它执行发送操作,然后继续执行下一条指令。消息可能最终转发到一个或许多个客户机,这些客户机都不需要作出回应。
  
  EJB 2.0 中的 JMS EJB 2.0 以两种方式支持 JMS 的集成:作为一种 bean 可用的资源,和作为一个 MessageDrivenBean。当将 JMS 用作一种资源时,使用 JMS API 的 bean 就是消息的产生者或发送者。在这种情况下,bean 将消息发送给称为主题或队列的虚拟通道。另一方面,MessageDrivenBean 则是消息的使用者或接收者。它监听特定的虚拟通道(主题或队列),并处理发送给该通道的消息。为了更好地理解消息产生者和消息使用者的作用,用 SessionBean bean 来发送一条使用 JMS 的消息,然后使用一个新的 MessageDrivenBean 来使用该同一条消息。
  
  作为 EJB 2.0 资源的 JMS 会话 bean 和实体 bean 都是基于 RPC 的组件,为了将各种事务性的组件装配到一起,这是一种卓越的体系结构。但是,在某些情况下,RPC 的同步性质会成为一种障碍,这正是 EJB 1.1 中将对 JMS API 的访问作为一种资源包括在内的原因。利用 JNDI 环境命名的上下文,bean 可以获得一个 JMS 工厂,并将一条异步消息发送给主题或队列(也从 JNDI 获得),而不必等待回应。
 
 

SUN公司正式推出了EJB的规范之后,在众多的公司和开发人员中引起了很大的反响。

标志着用Java开发企业级应用系统将变的非常简单。许多公司都已经推出了或正打算EJB的产品。EJB已经成为了Java技术的研究重点。

SUN公司对EJB的定义是:EJB是用于开发和部署多层结构的、分布式的、面向对象的Java 应用系统的跨平台的构件体系结构。采用EJB可以使开发商业应用系统变得容易,应用系统可以在一个支持EJB的环境中开发,开发完之后部署在其他的环境中,随着需求的改变,应用系统可以不加修改地迁移到其他功能更强、更复杂的服务器上。

在EJB的规范中,提到了6中角色,包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。

EJB规范的出现对电子商务发展起了很大的推动作用。现在大型的电子商务网站,都是采用EJB技术的应用服务器来构建的。现在应用比较广泛的,支持EJB的应用服务器中,已经产品化了的最主要的是三个:IBM的WebSphere,BEA的WebLogic,Inprise的IAS。另外,还有一些比较小的,可以给来做研究和学习用的有OpenEjb。

首先,我们来看看IBM的WebSphere:

IBM WebSphere应用服务器是一个完善的,开放的Web应用服务器。它是IBM e-business应用架构的核心。WebSphere 应用服务器 提供三个等级的版本,他们是:标准版(Standard Edition),高级版(Advanced Edition),企业版(Enterprise Edition)。其中,在高级版中开始支持EJB的编程模型。在企业版中提供一个高可靠的解决方案,使其能够移植到关键性的企业环境。WebSphere也是这些产品当中在中国市场做的最好的一个。不但举办了很多的竞赛,举办很多的讲座,还与国内诸多高校合作,免费赠送了很多套的WebSphere的套件。所以,WebSphere是在中国应用的最多的。

EJB是WebSphere最核心的对象技术之一,它提供了具有交易功能的服务器端的Java 组件,同时又是一种新型的对象分布技术编程模型。使用EJB组件完成的应用,会支持更高级的基于数据库的交易处理功能,如多个数据库之间的更新,两阶段提交等。

最关键的,WebSphere是IBM整个一套开发,应用服务器的套件。他把EJB和IBM其它的优秀的产品(TXSerise 和Component Broker)结合在了一起。在具体的应用中,基于安全的考虑,性能考虑和系统管理考虑,还可以增加Firewall,WebShpere Performance Pack 和 Tivoli。所以,可能IBM的EJB Container不一定是最好的,但是,WebSphere中的EJB和IBM其他产品的结合却是做的最好的。

通过工具集中的Visual Age,可以很快的开发出EJB组件,然后部署在WebSphere的应用服务器中,在通过集成在里面的Apache(Web Server),可以快速的开发一个电子商务的平台。在国内很有"钱"途的。

然后,我们再来看看BEA的WebLogic:

早在今年7月份,BEA公司就宣布:该公司率先实现了对Enterprise JavaBeans(EJB)2.0标准的支持。而EJB2.0规范是目前最高的Java企业级开发工业标准,BEA对EJB2.0的率先支持再次巩固了该公司在Java应用领域无可争议的领先地位,并加强了BEA WebLogic作为J2EE技术主要平台的市场地位。

BEA是通过为BEA WebLogic Server 5.1提供一个附加的软件包,实现了对EJB2.0的支持。凭借BEA WebLogic Server对EJB2.0的支持,BEA可帮助开发人员更快地推出电子商务应用系统,从而让开发人员极大地受益于这一业内最新标准。

作为服务器端商务逻辑的行业标准和Java2平台的基石,Enterprirse JavaBeans是BEA WebLogic应用服务器的主要技术。Enterprise JavaBeans使得开发人员能够专心地开发其应用系统和电子商务设想的商务逻辑,而不必为基础结构的构筑而分心。凭借对EJB2.0 的支持,BEA WebLogic应用服务器系列可提供事实上的标准基础构架,帮助用户快速开发和部署下一代电子商务和企业应用系统。

阅读(798) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~