一、什么是 EJB ?
EJB(Enterprice JavaBeans )是一个用于分布式业务应用的标准服务端组件模型。EJB 并不是一个产品,它是Java 服务器端服务框架的规范,软件厂商根据它来实现EJB 服务器;应用程序开发者可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题。 其三大特点如下:
1)分布式:EJB 架构是一个用于开发和部署基于组件的分布式业务应用的组件架构;
2)采用 Enterprice JavaBeans架构编写的应用是可伸的、事务性的、多用户安全的。
3)可以一次编写这些应用,然后部署在任何支持 Enterprice JavaBeans规范的服务器平台,如 jboss、weblogic。
附:一些名词解释
1.分布式计算:
1)把大任务分成小块,分发给大家分别地做,再把每个人的计算结果汇总。
特点:分解工作,减轻成员的负担,成员之间做到职责分明。
2)充分利用网络上空闲的计算机的计算能力。
分布式组件:
1)分布对象技术是伴随网络而发展起来的一种面向对象的技术。
以前的计算机系统多是单机系统,多个用户是通过联机终端来访问的,没有网络的概念。网络出现后,产生了C/S、B/S的计算服务模式。
2)分布式对象技术主要使用了面向对象技术的封装性,组件可以分布在网络的任何位置。
对外界来说,它所需关心的只是组件的界面(接口),至于内部是如何实现的则无需考虑, 远程客户通过方法调用来访问它。这是分布式对象技术和传统的面向对象技术的最大不同点。
2.组件:可独立发布的二进制单元
3.框架:即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统;代表:Struts,Spring,Hibernate…
4.中间件:是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源; 代表:Weblogic,WebSphere,SunApp Server…
5.容器:EJB的家。提供事务管理、安全服务、持久化和分布式 等服务。离开容器,EJB就失去了它的生命和意义
二、EJB 是用来作什么的 ?
EJB 实际上是用于编写业务层代码的。举例来说,对于MVC (model-view-controller)三层结构的应用中,包含了显示层、控制层和业务层, 假设我们采用ejb开发基于MVC结构的应用,那么ejb就是用于开发应用的业务层。
三、为什么使用EJB ?
要回答为什么要使用EJB ,就要从EJB 能带来哪些好处入手。
1、简化大型分布式系统的开发过程。
1)利用网络中多台计算机的计算能力,构建瘦客户端(简化分布式访问)
2) EJB为我们提供了很多在企业开发中需要使用到的服务,如事务管理、安全、持久化和分布式等,因为这些服务由容器提供,无需我们自行开发,这样大大减少了我们的开发工作量。
3)EJB组件具有热部署的能力(可插拔)
4)可以扩展现有系统的JavaBean
2、优点:可维护性、重用性、可扩展性、可插拔性
1)缩短开发时间: 编程人员可将先行开发的部件装配到新的程序中,从而加速了新程序的开发
2)降低集成费用: 在将组件集成为一个完整的方案时,不同开发商采用了一致的标准接口,减少了特殊的定制工作
3)开发更具灵性: 只需简单调整全部应用的一些组件,即可为企业不同领域的应用提供特定的解决方案
4)降低维护费用: 各组件的软件功能是相对独立的,在维护和升级一个组件时,不必变动整个应用。维护简便
四、何时使用 EJB
先了解 EJB 可以作什么:
1)服务器端的业务层框架; 2)遵循EJB规范的标准组件; 3)分布式组件 ; 4)持久化数据支持; 5)事务性支持; 6)支持并发多用户安全
EJB 设计的初衷是用于分布式场合,所以,如果你的应用不需要分布式能力,确实没有必要使用EJB ,因为Spring+Hibernate提供了大部分原来只有 EJB 才有的服务,而且Spring提供的有些服务比 EJB 做的更细致,更周到。所以需要分布式技术支持的大型项目才建议 考虑EJB技术。如:1)分布式应付巨大的客户访问量;2)和已有的系统做组件化的集成。
五、EJB 的三种企业Bean
Enterprise JavaBean(EJB)定义了三种企业Bean,分别是会话 Bean(Session Bean),实体Bean(Entity Bean)和消息驱动 Bean(MessageDriven Bean)。
1、会话 Bean(Session Bean):Session Bean 用于实现业务逻辑,它分为有状态 bean 和无状态bean。每当客户端请求时,容器就会选择一个 Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。
2、实体Bean(Entity Bean):实体bean代表真实对象的数据。在EJB3.0中,实体bean仅作为普通Java对象来使用。最常用的是用实体bean代表关系库中的数据。一个简单的实体bean可以定义成代表数据库表的一个记录,也就是每一个实例代表一个特殊的记录。更复杂的实体bean可以代表数据库表间关联视图。在实体bean中还可以考虑包含厂商的增强功能,如对象--关系映射的集成(O/R Mappin)。
3、消息驱动 Bean(MessageDriven Bean):可以缩写为MDB,MDB是设计用来专门处理基于消息请求的组件。它能够收发一步JMS消息,并能够轻易地与其他EJB交互。它特别适用于当一个业务执行的时间很长,而执行结果无需实时向用户反馈或者无需反馈的这样一个场合。
参考:黎活明老师的 EJB3.0 教程