会话EJB系列(二)EJB分类

(本文承接上一篇文章《会话EJB系列(一)EJB概述》,继续对EJB内容展开详细解说)

EJB规范中定义了三种Bean:

会话Bean(Session Bean)

实体Bean(Entity Bean)

消息驱动Bean(MessageDrive Bean)

一.SessionBean的概念和作用

(1)定义

作用:用于处理业务逻辑的完整组件。

当SessionBea部署在在EJB容器中后,客户端获取该EJB组件,并调用它的方法,至方法结束,称为:客户端与SessionBean之间的一次会话,简称为会话Bean。

(2)EJB容器中SessionBean与Spring容器中POJOBean对比

可以把运行在EJB容器中的Session Bean,看做是运行在Spring容器中的POJOBean,只是SessionBean更强大一些而已,如:

1)并发与线程安全

EJB容器提供多线程并发功能,用于处理数量众多的客户端,但开发者完全不需要理会多客户端并发的线程安全问题,就像开发普通Java类一样。

2)方便Web Service支持

支持基于SOAP(Simple Object Access Protocol,简单对象访问协议)的WebService的访问,只需要少量配置

3)事务和安全管理

EJB以生命方式管理运行在其中的SessionBean的事务和安全

类似于Spring容器通过AOP以生命方式管理运行在其中的POJO Bean事务

(3)SessionBean分类

当客户端调用会话Bean的业务方法时,实例变量会一直记录着客户端的状态,称作“会话状态”。

1)Stateful Session Bean

有状态的会话Bean为特定客户端程序保持,用1-多个实例变量来记录会话状态,其状态在会话过程中保持,会话结束则不再保存。

2)Stateless Session Bean

无状态的会话Bean不为特定的客户端程序保持状态,不需要实例变量来记录会话状态,其状态仅限于方法调用的时候存在,当方法结束后不再保存

对比可知,有状态的会话Bean往往需要额外的系统开销来维护会话状态,所以性能要低一些。只有无状态的会话Bean可对外提供WebService,其他EJB不具有这种功能。

二.Message Driven Bean的概念和作用

(1)消息驱动Bean与事件监听器的对比

消息驱动Bean就是一个JMS消息的异步消费者,相当于一个事件机制中的事件监听器。

区别:事件监听器监听的是事件源上的事件;消息驱动Bean监听的是JMS的到来

(2)消息驱动Bean与无状态SessionBean对比

消息驱动Bean本身由无状态SessionBean变种而来

1)相同点

不会保留任何客户端状态,对所有客户端都是同等的

可以处理来自多个客户端的消息

2)不同点

客户端不能直接调用消息驱动Bean,只能通过发送JMS消息到消息目的地来触发消息驱动Bean。

消息驱动Bean本身由无状态SessionBean最大的优势在于“完全解耦”,无需获取消息驱动bean,甚至不需要知道消息驱动Bean的存在与否,只需要向目的地发送JMS消息就可以实现与消息驱动Bean的通信,相当于间接调用消息驱动Bean的onMessage方法。

三.实体和JPA

(1)EJB中的实体Bean与Hibernate中PO对比

EJB3中的实体Bean,是一个轻量级的持久化对象,就像Hibernate中的PO一样

1)相同点

实体Bean本身不具有持久化能力,需要JPA(java Persistence API)来操作这些实体,方可完成数据库的持久化访问。

2)不同点

改用Annotation来管理实体和数据库表之间的映射关系,而不是XML映射文件

(2)DAO与EAO

1)轻量级Java EE

以Spring+Hibernate为核心, 需要在Spring容器中建立DAO(Data Access Object)层用于实现数据库的访问逻辑,(建立在PO+Hibernate持久化API基础之上)

2)经典Java EE

以EJB为核心,需要在EJB容器中建立EAO(Entity Access Object)用于实现对底层数据库的访问,(建立在Entity+JPA基础之上),本质是类似的

(四)总结,EJB三种Bean

会话Bean,分为两种:有状态、无状态。较Spring的POJOBean有如下优势:并发与线程安全、只是WebService、事务和安全管理

消息驱动Bean,是JMS消息的异步消费者,由无状态Session变种而来。

实体Bean,类似Hibernate中的PO,并改用Annotation来管理实体和数据库表之间的映射关系。

时间: 2024-08-01 22:36:34

会话EJB系列(二)EJB分类的相关文章

会话EJB系列(一)EJB概述

EJB(Enterprise Java Bean)是Java EE(以前叫J2EE)的核心规范,不仅仅是一种优秀的组件技术,而且还是Java EE 其它规范(如RMI,JNDI,JMS等)的具体应用. 一.EJB的概念和意义 (1)EJB规范的由来 随着软件规模的快速增大和技术复杂度(分布式软件的开发技术,如CORBA.RMI等)的增加,导致软件开发变得越来越复杂,使普通程序员难于处理各种系统级服务,从而使得大型软件系统的开发变得难以为继. 后来,Sun公司发布了EJB规范,目的是统一各种分布式

会话EJB系列(三)SessionBean生命周期

(上一篇文章中我们介绍了<会话EJB系列(二)EJB分类> ,本文的核心为:SessionBean的生命周期) EJB生命周期:指EJB在运行过程中经历的阶段和状态. 首先强调的是:SessionBean的生命周期是由容器控制的而不是应用程序!对于客户端是完全透明的.但是对于开发者而言,必须了解SessionBean在EJB中的运行规律,才可以更好的管理SessionBean.当然允许被开发者改变. 在前面的文章中我们提到过,可以将EJB容器理解为Spring容器,运行在EJB中的Sessio

会话EJB系列(四)SessionBean事务管理

(上一篇文章中我们介绍了<会话EJB系列(三)SessionBean生命周期>,本为的主要介绍SessionBean中事务管理) SessionBean从功能上可以分为两类: 第一类:成为EAO:用于封装底层的实体和JPA,本质上其功能就是DAO.(不需要事务控制.因为JPA本质是对ORM实现的封装.) 第二类:充当业务组件:是底层EAO对象的Facade,系统控制器(如struts中的Action,springMVC中的Controller)将调用他们的业务方法来处理用户请求.(需要添加事务

会话EJB系列(五)拦截器

上一篇文章<会话EJB系列(四)SessionBean事务管理>中,我们介绍了SessionBean的事务管理机制. 本文主题'拦截器',详细介绍其用途.作用.与Spring框架AOP的对比,并介绍其初步用法. 一.简介 企业级应用中经常面对的事务管理.安全检查.缓存.对象池管理等,为此Spring框架提供了AOP方式,灵活控制业务方法!而EJB3没有提供AOP支持,那么他又是如何应对的呢? JavaEE规范中提供的横切性服务:事务管理和安全检查. EJB容器实现JavaEE规范 用CMT解决

EJB初级篇--EJB组件之会话Bean

上篇博文中我们已经详解介绍了什么是EJB.其实最简单的说:EJB就是运行在独立服务器上的组件,客户端是通过网络对EJB对象进行调用的.而我们常说的企业Bean组件可以分为三种类型:会话Bean.消息驱动Bean和实体Bean.依据应用设计的不同,开发者可以选择适合应用的组件类型.下面几篇博文中我会为大家分别详细的介绍这三种企业Bean组件.本篇博文则就先来介绍介绍会话Bean吧. 首先来介绍一下,什么是会话Bean.会话Bean能够完成客户所要求的业务操作,它是含有业务逻辑的可重用组件,并能够用

Java系列之EJB

简介 EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序.凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK). 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Sess

EJB开发第一个无状态会话bean、开发EJB客户端

开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过JDBC直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作. 实体Bean(Entity Bean) 它实际上属于java持久化规范(JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate.TopLink等ORM框架各自为营的局面. 消息驱动Bean(Messag

【EJB系列】(一)——JBOSS7中开发一个简单的EJB应用

导读 在本篇文章中你将了解到如何使用JBOSS7开发出一个简单的EJB应用以及在这个过程中遇到的问题. 环境 MyEclipse10 JBOSS7 JDK1.8.0 准备 MyEclipse10中配置JBOSS7 了解JBOSS目录结果 首先了解一下JBOSS7的目录结构,和之前的版本不一样 在 JBoss 7 中,文件系统分为两部分: 1. 独立服务器standalone 2. 域服务器domain (这是 JBoss 7 首次引入的) - 用于统一的管理多个实例 bin: 包含启动的脚本,用

Exchange Server 2013系列二:服务器角色

杜飞 在上一篇文章中,我们提到现在硬件性能的增加以及成本的下降,硬件已经不再成为软件应用的约束因素,特别是CPU,其 计算能力的成本显著降低.Exchange 2013 的主要设计目标是简化缩放.提高硬件利用率和实现故障隔离.Exchange 2013一开始将服务器角色的数目减少到了两个:客户端访问服务器角色和邮箱服务器角色,当然,升级到SP1之后也包含边缘服务器角色或者是边界网络中安装 Exchange 2007 或 Exchange 2010 边缘传输服务器角色.如下图所示: 客户端访问服务