在顶层我们使用的框架是面向服务的,而在其之下的开发方法面向组件,最基层的便是面向对象面向过程的JAVA编程。
JAVA EE标准中,为了解决企业大型软件的面向服务开发难题(包括但不限于服务接口定义、服务间通信、事务控制、内容持久化等)
开发了一套用于 web 环境专用的 JavaBean,称为 Enterprise JavaBean(EJB)。EJB是一组构建企业级web应用的专用 JavaBean。或者说,EJB是一套重量级的企业应用开发框架,使用者须遵循其规则开发具体业务逻辑。
EJB的目标是保证企业软件开发的可伸缩性(保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系统)。
EJB的源码内容对用户是透明的(即用户不需要知道其源码内容但用户可以根据接口直接调用)。
EJB架构描述了5类内容:
那拿老图说事的话:
EJB既然是一套javaBean,其中按功能分为三类构件:
EJB为我们提供了很多在企业开发中需要使用到的服务,如事务管理/安全/持久化/分布式等,因为这些服务由容器提供,无需我们自行开发,这样大大减少了我们的开发工作量。
另外,EJB提供了强制式分层解耦设计方法。 EJB比较适合用于大型企业的面向服务的软件开发。因为大型企业一般都会存在多个信息系统,而这些信息系统又相互关联。为了避免业务功能重复开发,实现最大程度的重用,有必要把业务层独立出来,让多个信息系统共享一个业务中心,这样应用就需要具备分布式能力。
非EJB的应用模式的MVC应用,其显示层、控制层和业务层, 三者不能分开。
采用EJB的应用模式的MVC应用,业务层被独立出来。也就是说,显示层和控制层可以部署在一台机器上,业务层部署在另一台机器上。
EJB比较适合用于大型企业,因为大型企业一般都会存在多个信息系统,而这些信息系统又相互关联。
如下图所示,某公司的两个系统:网上商城系统和手机商场系统。若采用EJB模式,两个系统可以共用分离出来的业务层。
当公司的业务发生变更时,只需修改分离出来的业务层即可。
EJB如何实现不同web服务器之间的互相通信:
EJB使用RMI(远程方法调用)实现不同Java虚拟机之间的对象调用。使用 webService\CORBA
等技术实现 java虚拟机 与非java程序服务器(如C ,python等)的数据交换问题。
实现不同web服务器之间的相互通信,是实现面向服务架构的基础环节。