会话EJB系列(一)EJB概述

EJB(Enterprise Java Bean)是Java EE(以前叫J2EE)的核心规范,不仅仅是一种优秀的组件技术,而且还是Java EE 其它规范(如RMI,JNDI,JMS等)的具体应用。

一.EJB的概念和意义

(1)EJB规范的由来

随着软件规模的快速增大和技术复杂度(分布式软件的开发技术,如CORBA、RMI等)的增加,导致软件开发变得越来越复杂,使普通程序员难于处理各种系统级服务,从而使得大型软件系统的开发变得难以为继。

后来,Sun公司发布了EJB规范,目的是统一各种分布式软件开发技术。

使开发者将主要精力集中在应用业务逻辑的实现上,而一些通用的系统服务(如分布式服务器、远程调用等底层技术)则由应用服务器负责管理。从而提高开发效率。

而且EJB规范为EJB容器(由应用服务器提供)和EJB组件(由开发者开发)制订了明确的规范,因此只要应用服务器支持标准的EJB规范,那么使用EJB组件开发的应用就可以移植到该服务器上运行。

(2)CORBA规范与EJB规范对比

与CORBA相比,EJB更简单,尤其体现在:访问控制、事务安全等系统级服务上。

CORBA需要开发者使用复杂的API来进行控制,但EJB则只需要使用部署描述符(一种XML文件)进行配置管理即可,真正提供这些系统级服务的是应用服务器。

二.EJB发展史

(1)EJB 1.0

最初的规范只包含有状态的会话Bean、无状态的会话Bean、实体Bean(持久化领域对象)

优点:提供了良好的分布式支持功能,允许通过远程接口来远程调用EJB中的业务方法。

缺点:试图简化RMI的远程访问编程,结果更复杂。

强制客户机组件总以远程访问的方式来调用EJB的方法,它会加大系统开销,影响性能。

(2)EJB 1.1

正式支持实体Bean,持久化解决方案。

把以"硬编码"方式写在程序代码中的信息提取到XML配置文件中,以声明式的方式来管理EJB部署信息。

缺点:Annotation替代XML配置文件,来管理配置信息。

(3)EJB 2.0

引入了本地接口:允许开发者决定EJB组件的访问方式,避免强制远程访问支持带来的系统开销和性能下降。

增强实体Bean功能:允许开发者通过配置文件来用容器管理EJB间关联关系。

引入了EJB查询语言EJB-QL:不如原生SQL强大

消息驱动Bean(MDB):客户机组件向目的发送消息来触发MDB的onMessage方法。本质上与无状态的会话Bean相同

(4)EJB 2.1

增加Web Service支持:更有利于异构系统的整合。

增加计时器服务:提供任务调度的支持

增强了EJB-QL的功能

(5)EJB 3.0

基于ORM理念的、统一的JPA规范作为持久层的解决方案,实现真正的可移植性。抛弃Entity Bean,保留Session Bean和消息驱动Bean

简化开发过程

只要求提供远程或本地的业务接口即可,不再需要Home接口,简化Session Bean开发

完全支持基于Annotation的依赖注入DI,来设置部署描述信息,代替了以前手动的JNDI查找,不再推荐使用XML文件作为部署描述文件

支持拦截器机制,本质上就是一种轻量级AOP实现。

(6)EJB 3.1

进一步简化开发

允许企业Bean只提供一个Bean类,甚至无须提供业务接口;

允许通过异步的方式来调用Session Bean的业务方法;

简化了EJB的类文件必须打包到JAR文件中的限制,允许直接将EJB类放到WAR文件中。

三.EJB的优势和使用场景

两种主流的Java EE技术架构:

经典Java EE:以EJB为核心,前端以JSF为MVC框架的技术架构,以Sun提倡的官方Java EE技术为主;

轻量级Java EE:以Spring+Hibernate为核心,前端以Struts 1或Struts 2为MVC框架的技术架构,以主流的开源框架为主。

(1)EJB 2和Spring对比

由于EJB 2开发有点复杂,直接催生了Spring框架。

IoC容器,处理企业级应用中,组件的依赖关系

AOP,处理应用底层的系统级问题,如事务、访问控制等

不管是以Spring+Hibernate为核心的轻量级Java EE应用,还是以EJB为核心的经典Java EE应用,它们的结构其实殊途同归。

对于应用开发者而言,Spring容器管理的不再是复杂的EJB组件,而是简单的POJO Bean。 这些Bean无须实现任何接口或继承任何基类,无须单独为每个Bean类使用XML配置文件,无须打包成JAR文件

开源的Spring容器已经取代了昂贵的EJB容器,不再需要应用服务器(如WebLogic、WebSphere等),只需要普通的Web服务器(如Resin、Tomcat等)

(2)EJB 3和Spring对比

EJB 3的出现成为了EJB规范的巨大转机。

就简单、易用性方面来说,EJB 3的开发和Spring容器中POJO Bean复杂度类似

真正商用的应用服务器提供了Spring容器更多的支持,例如EJB的池化管理、服务器节点的集群管理等。

(3)总结

对于规模较小、伸缩性要求不大的企业级应用而言,使用以Spring+Hibernate为核心的技术来开发即可。

但对于具有如下3个特征的企业级应用来说,选择以EJB为核心的经典Java EE技术可能更合适。

1)应用的规模较大,而且增长速度快速。

2)应用的伸缩性要求很高。

3)应用可能需要使用除JSP页面之外的其他客户端。

文章最后,对EJB做如下总结:

EJB使开发者将主要精力集中在应用业务逻辑的实现上,而一些通用的系统服务(如分布式服务器、远程调用等底层技术)则由应用服务器负责管理。从而提高开发效率。

而且EJB规范为EJB容器(由应用服务器提供)和EJB组件(由开发者开发)制订了明确的规范,因此只要应用服务器支持标准的EJB规范,那么使用EJB组件开发的应用就可以移植到该服务器上运行。

时间: 2024-10-07 20:13:50

会话EJB系列(一)EJB概述的相关文章

会话EJB系列(二)EJB分类

(本文承接上一篇文章<会话EJB系列(一)EJB概述>,继续对EJB内容展开详细解说) EJB规范中定义了三种Bean: 会话Bean(Session Bean) 实体Bean(Entity Bean) 消息驱动Bean(MessageDrive Bean) 一.SessionBean的概念和作用 (1)定义 作用:用于处理业务逻辑的完整组件. 当SessionBea部署在在EJB容器中后,客户端获取该EJB组件,并调用它的方法,至方法结束,称为:客户端与SessionBean之间的一次会话,

会话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系列(三)SessionBean生命周期

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

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初级篇--EJB组件之会话Bean

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

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

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

EJB初级篇--EJB组件之实体Bean

上文我们对会话Bean的生命周期和两个子类型(有状态会话Bean和无状态会话Bean)进行了详细解说,本篇博文中我们继续说说EJB组件中的实体Bean. 其实实体Bean就是一个加了注释符(@Entity)的简单java对象(POJO),实体关系和O/R映射也是通过注释符来定义的,并且提供了几种不同的数据库操作规范.一旦被EntityManager访问,它就成为了一个持久化对象,我们就可以像以前使用Hibernate一样来使用实体对象了. 下图是实体Bean的内容结构图,方便我们宏观的了解实体B