为了适应企业的快速发展、缩短企业信息系统的设计和开发周期、降低构建信息系统的成本,Sun公司制订了Java2 SDK Enterprise Edition(J2EE)规范,定义基于组件的方式设计、开发、组装和部署企业应用系统的各个组成部分。

在基于J2EE规范构建的企业信息系统中,将解决或满足特定业务领域商务规则的代码构建成为业务层中的Enterprise JavaBean(EJB)组件。EJB组件可以完成从客户端应用程序中接收数据、按照商务规则对数据进行处理、将处理结果发送到企业信息系统层进行存储、从存储系统中检索数据以及将数据发送回客户端等功能。

在J2EE结构中的位置

EJB属于J2EE体系结构中的业务逻辑层部分。

视图层或表现层——提供用户界面,接收用户输入,数据输出。Web应用的情况,JSP以及Servlet属于视图层组件。

业务逻辑层——实际的业务逻辑处理。根据视图层传送过来的数据,进行实际的业务逻辑处理(包括数据库的查询,更新等),再把处理后的结果返回给视图层。EJB,以及不使用EJB的情况下担当业务逻辑处理部分的JavaBean等归属于业务逻辑层组件。

数据持久化层——多指用于保存业务数据的数据库,也可以是文件等。

EJB的环境构成

EJB组件运行在EJB容器之中,EJB容器是一个EJB引擎,它提供了EJB组件运行的环境,并对EJB组件进行管理。EJB容器一般包含在EJB服务器(或应用服务器)中,EJB服务器可以拥有一到多个EJB容器。比较有名的支持EJB的服务器有Sun One,Interstage,Websphere,Weblogic,JBoss,JRun等。

调用EJB组件的一方被称为EJB客户端。EJB客户端可以为运行在WEB容器中的JSP,SERVLET;或者一般的Java Application,Applet;或者Web Service;也可以是别的EJB组件。

EJB客户端与EJB服务器可处于同一JVM环境中,也可处于不同计算机的不同JVM环境。

EJB规范的基本特征

在J2EE规范将企业应用系统划分的各逻辑层中,将封装商务规则的EJB组件部署在业务层中,用于根据客户端的服务请求进行业务数据的处理。EJB组件是基于分布式事务处理的企业级应用程序组件,其中包含处理业务数据的应用逻辑以及客户端调用EJB组件的商务方法获取服务的客户端接口。

当一个遵循EJB规范开发的第三方EJB组件被集成到一个应用系统中时,不需要更改其实现代码或者重新编译。

EJB容器

EJB容器截取客户和组建之间的通信,并根据配置信息添加基础设施代码,EJB容器用于提供EJB组件的开发、部署和运行环境。

EJB组件类型

在EJB2.0规范中定义了三种类型的组件:会话组件(Session Bean)、实体组件(Entity Bean)和消息驱动组件(Message-Driven Bean)。

会话组件和实体组件的定义由Home接口、Remote接口和组件类构成。在EJB组件的Home接口中定义了创建、删除和定位EJB组件的方法;EJB组件的Remote接口用于定义组件能够提供的商务方法;EJB组件类则用于实现Home接口中定义的组件生命期方法以及Remote接口中定义的商务方法。

会话组件

会话组件代表EJB组件与客户程序的一个短暂交互过程,其完成的功能可能是执行数据库读写操作或者是进行简单的数学计算等。

会话组件可以看成是瞬态的,其生命周期相对短暂,只有在客户程序与会话组件保持联系的过程中会话组件才具有生命力。如果客户程序结束会话过程,EJB容器将会话组件对象实例移出EJB容器中的组件实例池,该会话组件实例将失去生命力。另外,如果在客户程序与会话组件交互过程中EJB容器崩溃,那么用户必须重新创建一个新的会话组件对象实例来继续会话过程。

实体组件

实体组件用于提供数据库中数据记录在EJB服务器中的对象类型视图。一个实体组件代表数据库表中一行数据记录。客户端应用程序对实体组件的访问等价于对EIS层中数据库的访问过程。

在多客户应用的情况下,通过EJB容器的事务管理功能能够使多个客户进程以共享的方式访问同一个实体组件,进而保持组件对应数据库记录的一致性和完整性。

实体组件的状态是持续的,只要数据库中的数据记录存在,实体组件创建后就一直存在于EJB容器中,即使EJB服务器崩溃,实体组件同样具有生命力。

消息驱动组件

消息驱动组件(Message Driven Bean)是EJB2.0规范中引入的新型组件,用于在EJB容器中提供一种响应外部事件消息的组件类型机制。

消息驱动组件是服务器端的无状态类型组件。该类型的组件只有组件类定义,没有类似于会话组件和实体组件的Home接口和Remote接口。

参考文章:

  1. 图解EJB的体系结构
  2. EJB概述:分布式多层体系结构

EJB体系结构的更多相关文章

  1. EJB:快速入门

    1.EJB概念 2.EJB体系结构 3.SessionBean 3.1 SessionBean 服务端组件 3.2 Remote 与 Local 模式 3.3 Client访问处理流程 3.3.1 R ...

  2. Java系列之EJB 理解

    EJB = Enterprise Java Bean,它和JavaBean有本质的区别,最好不要将他们混淆起来,就像不要将Java和 Javascript混淆起来一样.EJB有3中类型:Session ...

  3. J2EE初探

    J2EE概述 3层结构 4层模型 13项核心技术 J2EE容器 J2EE的优势与缺陷   J2EE概述 Java 2平台有3个版本,分别是适用于小型设备和智能卡的Java 2平台Micro版(Java ...

  4. Microsoft .NET Pet Shop 简介

    最初研究 .NET Pet Shop 的目的是用 Microsoft .NET 实现 Sun 主要的 J2EE 蓝图应用程序 Sun Java Pet Store 同样的应用程序功能. 根据用 .NE ...

  5. J2EE基础之EJB

    J2EE基础之EJB 1.什么是EJB?       EJB(Enterprise Java Beans),是JavaEE中的商业应用组件技术,是JavaEE三大组件(Servlet,JSP,EJB) ...

  6. EJB 简介

    EJB: 被称为java企业bean,服务器端组件,核心应用是部署分布式应用程序.用它部署的系统不限定平台.实际上ejb是一种产品,描述了应用组件要解决的标准 标准:   可扩展 (Scalable) ...

  7. JEE , EJB概念深入概括

    说起EJB,不得不提JEE,java EE 英文全称为:java Enterprise Edition企业级应用的软件架构,是一种思想,也是一种规范,方便从事这方面的开发者以及开发厂商进行规范性的开发 ...

  8. 【toplink】 位居第一的Java对象关系可持续性体系结构

    TopLink,是位居第一的Java对象关系可持续性体系结构,原署WebGain公司的产品,后被Oracle收购,并重新包装为Oracle AS TopLink.TOPLink为在关系数据库表中存储 ...

  9. EJB

    Enterprise JavaBean,企业级javabean,是J2EE的一部分,定义了一个用于   开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK). 是Jav ...

随机推荐

  1. sql语句查询添加自增列

    SELECT Row_Number() over ( order by getdate() ) as '序号', * FROM  T_Cod_XQ

  2. LintCode 推断一个二叉树树是否是还有一个二叉树的子书

    有两个不同大小的二进制树: T1 有上百万的节点: T2 有好几百的节点. 请设计一种算法.判定 T2 是否为 T1的子树. /** * Definition of TreeNode: * class ...

  3. 自己写一个jqery的拖拽插件

    说实话,jQuery比原生的js好用多了,本来想用原生写的,也写出来的,仅仅是,感觉不像插件,所以用jQuery实现了一版. 实现的功能:能够指定拖拽的边界,在拖拽过程中,能够触发几个自己定义事件 先 ...

  4. Windows消息队列

    一 Windows中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能 创建的各种窗口的消息.应用程序中含有一段称作“消息 ...

  5. 怎样使用jsp实现header和footer与网页内容的分离

    好多显示层框架都自带这样的功能JSF,Wicket,页面布局取决于项目使用的显示层框架. 前台即客户端的布局,通常用在无需跳转的页面.比如同样是用户管理页面,增删改查的操作都希望停留在同一个页面.这时 ...

  6. perl 使用cookie

    use Net::SMTP; use LWP::UserAgent; use HTTP::Cookies; use HTTP::Headers; use HTTP::Response; use Enc ...

  7. D2010 RTTI + Attribute 简单实现ORM

    还记得David I 今年四月来盛大时,被问及“反射机制能再做得好一点吗?我们想放弃RTTI”,David I 回答“这的确是需要考虑的地方,当然RTTI我们不会放弃的”.(这个白胡子的老哥哥还真很可 ...

  8. c#Enum的用法

    public enum ResType { Role = 0, Dept = 1, Group = 2, Site = 3, Org = 4, Sub=8 } 这里定义了一个enum    ResTy ...

  9. Android WebView挂马漏洞--各大厂商纷纷落马

    本文章由Jack_Jia编写,转载请注明出处.   文章链接: http://blog.csdn.net/jiazhijun/article/details/11131891 作者:Jack_Jia ...

  10. 例3.1 猜猜数据结构 UVa11995

    1.标题叙述性说明:点击打开链接 2.解题思路:据来推測一种可能的数据结构,备选答案有"栈,队列.优先队列".结果也可能都不是或者不确定. STL中已经有这三种数据结构了,因此直接 ...