【转载+整理】EJB(三) EJB分层架构
@李祥0_0 http://blog.csdn.net/happylee6688/article/details/9268431
@夜星云 http://blog.csdn.net/happyqwz/article/details/8237212
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的特征
- 可扩展(Scalable) 可以通过部署多台EJB服务器实现扩容,其实和RPC技术类似,EJB是使用RMI
- 分布式 (Distributed) EJB可以部署在不同的服务器上,EJB服务器往往还提供了负载均衡
- 事务处理(Transactional) 跨连接的事务,这里是和Webservice的主要区别
- 数据存储(Persistent) EJB容器使用JPA标准实现数据持久化
- 安全性 (Secure) 由 EJB 服务器提供资源的访问权限控制
一个业务逻辑可能会调用分布在多台服务器上的 EJB 组件,但是这么多的组件调用必须纳入一个事务范围之中。也就是说如果需要调用三个 EJB 组件,第一个调用成功,第二个调用成功,但第三个调用失败了,因此在第一和第二次调用成功时进行的事务操作(这里的事务操作不单单指数据库的,还有可能包括消息队列服务的事务)都必须进行回滚。
但是,如果是调用三个 WebService 的话,那调用成功的那两个基本上是不可能进行回滚的,调用完了就是完了。
WebService 只是对外提供的调用接口,而 EJB 是个业务组件。一个对外的 WebService 在服务端中也是需要实现业务逻辑的,在 J2EE 中,这些业务逻辑基本上都是由 EJB 组件来实现,对外发布 WebService 接口(当然了,使用符合 JAX-WS 规范的开源框架不用 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接口。
【下一篇将详细介绍3种javaBean】
【转载+整理】EJB(三) EJB分层架构相关推荐
- (转载整理)三步在Ubuntu上安装微信QQ
目录 安装 主要问题 1 字体问题 2 无法发送图片 主要是通过网络搜索找到比较快速便捷的方法,以及遇到的问题,在这里归纳总结展示.引用的地方会标出出处. 安装 添加仓库 首次使用时,你需要运行如下一 ...
- DDD分层架构的三种模式
本文来说下DDD分层架构的三种模式 文章目录 概述 DDD 分层架构 模式一:四层架构 模式二:五层架构 模式三:六边形架构 本文小结 概述 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和 ...
- 走向.NET架构设计—第三章—分层设计,初涉架构(后篇)
走向.NET架构设计-第三章-分层设计,初涉架构(后篇) 前言:本篇主要是接着前两篇文章继续讲述! 本篇的议题如下: 4. 数据访问层设计 5. 显示层设计 6. UI层设计 4. 数据访问层设 ...
- 还在搞三层架构?了解下 DDD 分层架构的三种模式吧 !
来源:jianshu.com/p/a775836c7e25 引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识. DDD DDD(Domain DrivenDesign ...
- 还在搞三层架构?了解下 DDD 分层架构的三种模式吧
引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识. DDD DDD(Domain Driven Design,领域驱动设计)作为一种软件开发方法,它可以帮助我们设计高 ...
- 领域驱动设计(DDD):分层架构的三种模式
DDD DDD(Domain Driven Design,领域驱动设计)作为一种软件开发方法,它可以帮助我们设计高质量的软件模型.在正确实现的情况下,我们通过DDD完成的设计恰恰就是软件的工作方式. ...
- 数仓(三)简析阿里、美团、网易、恒丰银行、马蜂窝5家数仓分层架构
上一篇我们介绍了数据集市的概念以及它和数仓的区别,并且重点论述了大数据数仓中的分层架构体系. 这篇我们简要分析一下以下5家公司的数仓分层架构模型: 1.马蜂窝数仓分层架构 2.阿里云MaxComput ...
- 走向.NET架构设计—第三章—分层设计,初涉架构
走向.NET架构设计-分层设计,初涉架构(前篇) 前言:本篇不打算接着上一篇来,这没有关系,以为内他们之间的联系不大,以后我再补上.因为之前一直在谈论设计,也谈了一些TDD的东西,大家反应觉得讲述的还 ...
- 你真的了解分层架构吗?——写给被PetShop毒害的朋友们 (转)
转自:http://www.cnblogs.com/leoo2sk/archive/2009/06/01/1494095.html 一叶障目 .NET平台上的分层架构(很多朋友称其为"三层架 ...
- 你了解分层架构吗?给被PetShop“毒害”的朋友(转)
笔者在仔细阅读了大量这方面文章后,认为许多朋友在分层架构的理解上存在两个比较大的偏颇: 1.没有从本质角度去理解分层的内涵,而只是了解其表象. 2.对分层架构的理解过于狭隘,只是少数概念,而又不够深入 ...
最新文章
- Java EE---使用Spring框架创建Department小项目
- 对于神经网络,硕博士不需要弄明白原理,只需要应用,是这样吗?
- 微信小程序code 换取 session_key
- springboot-自动配置流程
- python变量后面加星号_Python基础找茬系列20--python函数的秘密
- 数据库外键名称不要用自动生成的名字
- 解决font-weight:600在安卓机不生效的方法
- 数据驱动和关键字驱动
- 2007年网络安全技术发展分析
- vivado版本升级导致的IP锁定的更新解决办法
- 开发erp管理系统的好处
- Unity导入图片为何会失真
- Openstack平台neutron模块之网络基础概念
- der解码规则_使用openssl进行asn1结构的der数据解码
- ToDesk版本更新,引入RTC传输技术,是否早以替代向日葵远程控制?
- 视频CMS是什么?你为什么需要它?
- 文献管理软件——Endnote和Noteexpress选择哪个较为合适?
- Cesium 实战 - 最新版(1.104.0)通过异步方式初始化地球,加载影像以及高程图层
- 看EyeEm如何在产品开发中整合、运用深度学习模型
- java fx eclipse_JavaFX环境搭建 - Eclipse的e(fx)clipse插件安装 创建JavaFX项目
热门文章
- bp神经网络数据预测实例,bp网络神经预测模型
- COMSOL模拟气流可视化
- 年龄和收入对数的线性回归_(CFA教材详解)数量分析:线性回归模型的规范及常见错误...
- Nginx工作原理和优化、漏洞
- MAC地址前三位是厂家标识符(Organizationally Unique Identifier),可以从IEEE官网查询
- mysql置疑原因_SQL SERVER2000数据库置疑处理详解
- LeetCode答案详解
- TCP 的 keeplive保活机制
- autocad型源代码_AutoCAD文件格式详解
- keil5破解(备忘,有需要的可以下载)