J2EE的体系架构——J2EE

https://blog.csdn.net/dandanzmc/article/details/27355565
https://blog.csdn.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组件ServletJSPJavaBean,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架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。