第一:什么是EJB?
![](https://img-my.csdn.net/uploads/201304/09/1365509991_1684.png)
![](https://img-my.csdn.net/uploads/201304/09/1365510068_4282.png)
EJB是sun的服务器端组件模型。EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的可重用构件体系结构,使用EJB结构编写的应用程序具有可扩展性、交互性以及多用户安全特性。
注意:EJB并不是一个产品。它是Java服务器端服务框架的规范。
第二:那EJB既然是个规范,那跟我们常说的的JSP、servlet、JNDI规范有什么关系,跟J2EE又有什么关系?
EJB是J2EE是一部分,也是j2ee的一种规范,定义了一个用于开发基于组件的企业多重应用程序的标准。
EJB与JSP、Servlet、JNDI都是处于同一个级别的,同属于j2EE规范。只是使用的场合不同,JSP技术主要用于界面展示层,而EJB技术主要用于业务逻辑层。
那么看一下j2EE的组件图:
![](https://img-my.csdn.net/uploads/201304/09/1365509991_1684.png)
![](https://img-my.csdn.net/uploads/201304/09/1365510068_4282.png)
两种主导J2EE的架构图。上图和下图很相似,只不过上图在web容器与ejb容器之间传送的协议很清楚,便以理解。而下图增加了j2ee规范。
第三:EJB又称企业Java Bean,那EJB与普通的JavaBean有何区别?
任何一个对属性提供了getset方法的java类,称为javaBean。
Java Bean是具有可重用性的java组件。Java Bean是轻量级的框架。而EJB是重量级框架。轻量级框架提供的服务相对应来讲是少,所以其执行处理能力相对应来说是较弱的,因此相应的减少了开发的复杂度,所以相应来说,是适合小型系统。
另外,Java Bean是开发组件,而不是部署组件。开发组件,是不依赖容器的。而部署组件,是需要依赖容器的。比如EJB组件是需要放在EJB容器下的,应用在J2EE项目中。
第四:为什么需要EJB?
所谓存在便是合理的。既然存在,肯定有他使用的价值之处。那我们学习之前,必须理解使用他的原因。
在考虑EJB之前,我们想想为啥,使用J2EE呢?
其实,使用J2EE的目的是开发多层系统,主要目的是为了解耦。比如开始的Model1系统,后来更新为Model2系统。
那我们为什么现在考虑EJB?
在以前我们开发的J2EE系统,其实都是web系统,我们第一个问题已经提到了开发多层结构的问题。web系统,层次化不清晰,虽然我们也尝试使用javabean来写我们的业务逻辑层,以及使用hibernate框架来实现持久层,但是这种人为的划分,导致普通的javabeans没有明显的标志。比如业务javabean和mvc中的javaben分割界限。
![](https://img-my.csdn.net/uploads/201304/09/1365510509_1898.png)
EJB提供了多层结构,使开发更加弱耦合,从此方便后期的维护以及升级。
EJB支持分布式开发。
EJB支持事务机制。
EJB支持数据存储,也就是我们常说的持久化。
EJB支持安全性。
EJB加强性能的提升。EJB支持对象连接池和缓存机制。优化性能方案很多都是从数据库连接池和缓存机制出发的。
第五:EJB中类型
sessionBean:主要用于业务逻辑。
消息驱动bean【MDB】:主要用于异步通信。
实体bean【entityBean】:主要用于持久操作。
第六:EJB中实现角色分析
为了将EJB成功部署,不仅仅需要应用服务器和EJB组件,实际上,其中有六种角色互相扶持,每个角色都是自己领域的专家,联合工作,必然减少了开发的周期,提高了开发的质量。
正如工作一样,明智的上司,若想把公司实力强大,必须要学会用人。但是前提,必须要了解下属,这样才能发挥其价值。
那讨论一下EJB中的角色
EJB组件提供者:提供开发业务的组件。比如公司甲提供了基础数据的组件,公司乙要开发教务系统。那么直接使用公司甲提供的基础数据即可,不必再开发。其中,公司甲就相当于EJB组件提供者。
应用组件组装者:上例中的乙公司就是。
容器和服务器提供商:其中容器和服务器都不在区分了。容器其实提供了EJB需要的运行条件。比如:使用JBOSs、weblogic、websphere等。
应用部署者:应用组件组装者开发完毕后,应用部署者,把应用部署到相应的服务器中。
系统管理员:应用部署者,部署完毕后,保证项目的稳定以及正常使用,是需要相应的人员来维护的。
工具供应商:为了提高开发的速度,使用IDE环境。比如Eclispe,myeclispe,jbuilder等
![](https://img-my.csdn.net/uploads/201304/09/1365510783_7015.png)
也许在以上的角色可以合并,并不是所有的角色都是独立的。比如现在的我们开发的ejb项目,ejb组件提供者、应用组件组长这、应用部署者、系统管理员都是同一个人。
总结:
从整体上分析初次接触EJB的常见的困惑。
当然在后期会不断整理EJB的知识。比如EJB开发需要、EJB开发实例,以及如何支持事务、分布式。