J2EE的体系架构——J2EE
https://blog.****.net/dandanzmc/article/details/27355565
https://blog.****.net/Ashes18/article/details/73614571
J2EE的体系架构
J2EE是Java2平台企业版
(Java 2 Platform,Enterprise Edition),它的核心是一组技术规范与指南
,提供基于组件的方式
来设计、开发、组装和部署企业应用。J2EE使用多层分布式的应用模型
。
J2EE分层
-
客户层,
运行在客户计算机上的组件
,用户与系统的接口逻辑,通过http协议
的来访问应用服务器。 -
表示层,
运行在J2EE服务器上的组件
,通过与业务逻辑层互动,将用户需要的数据以适当的方式输出
。 -
业务逻辑层,同样是
运行在J2EE服务器上
的组件。 -
企业信息系统层(EIS),是指
运行在EIS服务器上
的软件系统。
以上层次一般也指三层应用
,也就是客户层+J2EE应用服务层+企业信息系统层,分布在三个不同位置:客户计算机
、J2EE服务器
及后台的数据库或过去遗留下来的系统
。
客户层
-
Web浏览器
:也称Web客户端, 以标准格式来显示从服务器传递过来的网页,它们传递给浏览器时已经是HTML或者XML格式,浏览器正确的显示给用户。 -
小应用程序
(Applet):是嵌在浏览器中的一种轻量级客户端
,当web页面不能充分的表现数据或者应用界面的时候,才使用它,Applet是一种替代web页面的手段,能够使用J2SE开发Applet,Applet无法使用J2EE中的各种Service和API
。需要运行在安装了Java虚拟机的客户端Web浏览器上
。 -
应用程序客户端
:J2EE应用程序客户端相对Applet而言,是一个较重量级的客户端
,能够使用大多数的服务和API,它运行在客户机上,能提供强大而灵活易用的用户界面,如使用Swing或AWT创建的图形化的用户界面(GUI)。当然,应用程序可直接访问运行在业务层的Bean
,如果需求允许,也可以打开HTTP连接,建立与运行在Web层上的Servlet之间的通讯
。
J2EE应用服务器
两大容器: Web容器+EJB容器,即表示层+业务逻辑层
-
Web容器:
管理所有的Servlet等Web组件的运行
,对响应客户请求和返回结果提供了运行时的支持
。 -
EJB容器:负责所有的EJB的运行,支持EJB组件的
事务处理
和生命周期管理
,以及Bean的查找和其他服务
,支持J2EE多层架构的基础结构,是一个控制业务实现的运行期环境
,并提供
事务服务、持久性、安全性等重要的系统服务,让开发人员不必开发基础服务而将注意力集中在业务逻辑的实现
。
两大组件:Web组件+Ejb组件
-
Web组件:与基于Web的客户端进行交互,J2EE中有
三类Web组件
:Servlet
、JSP
、JavaBean
,Servlet是Web服务器的功能扩展,接受Web请求,返回动态的Web页面。Web容器中的组件可以使用EJB中的组件来完成复杂的业务逻辑。值得注意的是静态的HTML页面和Applets不算是Web层组件。 -
EJB组件:包含三种不同类型的EJB:会话Bean、消息驱动Bean、实体Bean
1、会话Bean
:着重业务逻辑的实现与控制
,负责与Web层通信
,给Web层提供访问业务数据的接口。当客户端完成执行过程的时候,会话Bean及相关数据会消失
。2、
实体Bean
:代表持久数据
,数据相当于存储在数据库表中,它负责保存业务数据
,为会话Bean访问业务数据提供接口
。3、
消息驱动Bean
:用于接收、处理客户
通过JMS发送过来的消息
,允许业务组件接收依附的JMS消息。
企业信息系统层
负责运行企业信息系统软件
,包括ERP、数据库
、目录服务、其他遗留系统等
。
javaEE应用的分层模型
注意:javaEE是java2ee的别名
(1)Domain Object(领域对象
)层:此层由一系列的POJO(Plain Old Java Object,普通的、传统的java对象)组成,这些对象是该系统的Domain Object,往往包含了各自所需实现的业务逻辑方法。
(2)DAO
(Data Access Object,数据访问对象
)层:此层由一系列的DAO组件组成,这些DAO实现了对数据库的创建、查询、更新和删除(CRUD
)等原子操作。
(3)业务逻辑层
:此层由一系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可能仅仅用于暴露Domain Object对象所实现的业务逻辑方法
,也可能是依赖DAO组件实现的业务逻辑方法
。
(4)控制器层
:此层由一系列控制器组成,这些控制器用于拦截用户请求
,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件
。
(5)表现层
:此层由一系列的JSP页面,Velocity页面,PDF文档视图组件组成,负责收集用户请求,并显示处理结果。
各层的javaEE组件之间以松耦合的方式耦合在一起,各组件并不以硬编码方式耦合,这种方式是为了应用以后的扩展性。 从上向下,上面组件的实现依赖于下面组件的功能;从下向上,下面组件支持上面组件的实现。
javaEE应用组件:
JavaEE构架提供了良好的分离,隔离了各组件之间的代码依赖,javaEE应用大致包括以下几类组件:
(1)表现层组件
:主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层技术是JSP,还可以是Velocity等技术。
(2)控制器组件
:对于JavaEE的MVC框架而言,框架提供一个前端核心控制器,而核心控制器负责拦截用户请求
,并将请求转发给用户实现的控制器组件。而这些用户实现的控制器则负责处理调用业务逻辑方法,处理用户请求
。
(3)业务逻辑组件
:是系统的核心组件,实现系统的业务逻辑
。通常一个业务逻辑方法对应一次用户操作。一个业务逻辑方法应该是一个整体,因此要求对业务逻辑方法增加事务性
。业务逻辑方法仅仅负责实现业务逻辑,不应该进行数据库访问
。因此,业务逻辑组件中不应该出现原始的Hibernate,JDBC等API。
(4)DAO组件
:Data Access Object,也被称为数据访问对象
。这个类型的对象比较缺乏变化
,每个DAO组件都提供Domain Object 对象基本的创建、查询、更新和删除等操作
,这些操作对应于数据表的CURD
等原子操作。
总结
J2EE所包含的各类组件、服务架构及技术层次,均有共同的标准及规格
,让各种依循J2EE架构的不同平台之间,存在良好的兼容性
,解决过去企业后端使用的信息产品彼此之间无法兼容
,企业内部或外部难以互通
的窘境。