EJB体系结构
为了适应企业的快速发展、缩短企业信息系统的设计和开发周期、降低构建信息系统的成本,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接口。
参考文章:
- 图解EJB的体系结构
- EJB概述:分布式多层体系结构
EJB体系结构的更多相关文章
- EJB:快速入门
1.EJB概念 2.EJB体系结构 3.SessionBean 3.1 SessionBean 服务端组件 3.2 Remote 与 Local 模式 3.3 Client访问处理流程 3.3.1 R ...
- Java系列之EJB 理解
EJB = Enterprise Java Bean,它和JavaBean有本质的区别,最好不要将他们混淆起来,就像不要将Java和 Javascript混淆起来一样.EJB有3中类型:Session ...
- J2EE初探
J2EE概述 3层结构 4层模型 13项核心技术 J2EE容器 J2EE的优势与缺陷 J2EE概述 Java 2平台有3个版本,分别是适用于小型设备和智能卡的Java 2平台Micro版(Java ...
- Microsoft .NET Pet Shop 简介
最初研究 .NET Pet Shop 的目的是用 Microsoft .NET 实现 Sun 主要的 J2EE 蓝图应用程序 Sun Java Pet Store 同样的应用程序功能. 根据用 .NE ...
- J2EE基础之EJB
J2EE基础之EJB 1.什么是EJB? EJB(Enterprise Java Beans),是JavaEE中的商业应用组件技术,是JavaEE三大组件(Servlet,JSP,EJB) ...
- EJB 简介
EJB: 被称为java企业bean,服务器端组件,核心应用是部署分布式应用程序.用它部署的系统不限定平台.实际上ejb是一种产品,描述了应用组件要解决的标准 标准: 可扩展 (Scalable) ...
- JEE , EJB概念深入概括
说起EJB,不得不提JEE,java EE 英文全称为:java Enterprise Edition企业级应用的软件架构,是一种思想,也是一种规范,方便从事这方面的开发者以及开发厂商进行规范性的开发 ...
- 【toplink】 位居第一的Java对象关系可持续性体系结构
TopLink,是位居第一的Java对象关系可持续性体系结构,原署WebGain公司的产品,后被Oracle收购,并重新包装为Oracle AS TopLink.TOPLink为在关系数据库表中存储 ...
- EJB
Enterprise JavaBean,企业级javabean,是J2EE的一部分,定义了一个用于 开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK). 是Jav ...
随机推荐
- hdu 4090 GemAnd Prince
题目大意: 别人说是消消看,至于你玩没玩过.反正我是没玩过的. 就是选择一个钻石,可以消除与它相连的所有钻石.并获得 消除数量*消除数量 的分 思路: 直接暴搜,然后用一个cnt数组表示每一种钻石剩 ...
- Swift - 日期选择控件(UIDatePicker)的用法
1,使用storyboard创建日期选择控件 首先我们将一个UIDatePicker控件和一个按钮直接添加到Main.Storyboard上.该按钮是为了点击时弹出提示框显示当前选择的日期和时间. 同 ...
- Eclipse中快捷键的使用
1:引入包 ctrl+shift+o 2:对输入进行提示:Alt+/ 3: 全局搜索:crtrl + h 4:Eclipse创建方法快捷键Alt+shift+M 5:Eclipse创建局部变量快捷 ...
- [置顶] 深圳华为BSS公共部件 (BI 商业智能 Java Javascript)
深圳华为BSS公共部件 部门招聘 招聘面试地点:大连,西安 工作地点:深圳 时间:2013年9月7日 联系方式:dawuliang@gmail.com 18675538182 有兴趣的同学,可以直接电 ...
- SQL查询语句联系
建立四个表,分别是学生表,课程表,成绩表和教师信息表 插入信息: 题目: 1. 查询Student表中的所有记录的Sname.Ssex和Class列 select Sname,Ssex,Class f ...
- 玩转Windows服务系列——服务运行、停止流程浅析
原文:玩转Windows服务系列——服务运行.停止流程浅析 通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大 ...
- [Word使用笔记]分类简介
什么Vistual Studio , Eclipse , Xcode , 都弱爆了,Word比他们难多了 - -! 此分类用于记录Word的一些使用
- 如何为linux释放内存和缓存
如何为linux释放内存和缓存_华陌飞尘_新浪博客 如何为linux释放内存和缓存 (2011-10-20 10:49:01) 标签: linux swap me ...
- 使用ROW_NUMBER()查询:列名 'RowNumber' 无效。
原文:使用ROW_NUMBER()查询:列名 'RowNumber' 无效. 使用ROW_NUMBER()方法查询结果集:语句如下: select ROW_NUMBER() OVER(ORDER ...
- 基于S5pv210流媒体server的实现之网络摄像头(by liukun321 咕唧咕唧)
这里仅介绍流媒体server端的实现思路.及编码注意问题,不会贴代码的详细实现. 直接入正题先介绍一下系统硬件框架: server端连接PC机用VLC播放例如以下图: server端应用程序能够分为图 ...