J2EE初识

一。 概念
        J2EE(Java 2 Platform, Enterprise Edition)是一个为大企业主机级的计算类型而设计的Java平台。Sun微系统(与其工业伙伴一起,例如IBM)设计了J2EE,以此来简化在受客户级环境下的应用开发。由于创造了标准的可重用模块组件以及由于构建出能自动处理编程中多方面问题的等级结构,J2EE简化了应用程序的开发,也降低了对编程和对受训的程序员的要求。
        具有平台无关性的J2EE 结构使得J2EE 程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且J2EE 服务器以容器的形式为所有的组件类型提供后台服务。因为你不用自己开发这种服务,所以你可以集中精力解决手头的业务问题。
二。 结构(体系结构参考:https://blog.csdn.net/whitesun123/article/details/79686779)
容器和服务容器设置定制了J2EE服务器所提供的内在支持,包括安全,事务管理,JNDI(Java Naming and Directory Interface)寻址,远程连接等服务,以下列出最重要的几种服务:
 
  1. J2EE安全(Security)模型可以让你配置 web 组件或enterprise bean,这样只有被授权的用户才能访问系统资源. 每一客户属于一个特别的角色,而每个角色只允许激活特定的方法。你应在enterprise bean的布置描述中声明角色和可被激活的方法。由于这种声明性的方法,你不必编写加强安全性的规则。
  2. J2EE 事务管理(Transaction Management)模型让你指定组成一个事务中所有方法间的关系,这样一个事务中的所有方法被当成一个单一的单元. 当客户端激活一个enterprise bean中的方法,容器介入一管理事务。因有容器管理事务,在enterprise bean中不必对事务的边界进行编码。要求控制分布式事务的代码会非常复杂。你只需在布置描述文件中声明enterprise bean的事务属性,而不用编写并调试复杂的代码。容器将读此文件并为你处理此enterprise bean的事务。JNDI 寻址(JNDI Lookup)服务向企业内的多重名字和目录服务提供了一个统一的接口,这样应用程序组件可以访问名字和目录服务。
  3. J2EE远程连接(Remote Client Connectivity)模型管理客户端和enterprise bean间的低层交互。当一个enterprise bean创建后,一个客户端可以调用它的方法就象它和客户端位于同一虚拟机上一样。
  4. 生存周期管理(Life Cycle Management)模型管理enterprise bean的创建和移除,一个enterprise bean在其生存周期中将会历经几种状态。容器创建enterprise bean,并在可用实例池与活动状态中移动他,而最终将其从容器中移除。即使可以调用enterprise bean的create及remove方法,容器也将会在后台执行这些任务。
  5. 数据库连接池(Database Connection Pooling)模型是一个有价值的资源。获取数据库连接是一项耗时的工作,而且连接数非常有限。容器通过管理连接池来缓和这些问题。enterprise bean可从池中迅速获取连接。在bean释放连接之后可为其他bean使用。
三。容器的类型
  1. EJB (enterprise java bean)容器管理所有J2EE 应用程序中企业级bean 的执行。enterprise bean 和它们的容器运行在J2EE 服务器上。
  2. WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接与容器中的环境变量接口交互,不必关注其它系统问题。主要由WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理
WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。
 
四。 四层模型

客户层组件

J2EE应用程序可以是基于web方式的,也可以是基于传统方式的。包括 应用客户端程序和applets

web 层组件

J2EE web层组件可以是JSP 页面或Servlets.按照J2EE规范,静态的HTML标准通用标记语言下的一个应用)页面和Applets不算是web层组件。
web层可能包含某些 JavaBean 对象来处理用户输入,并把输入发送给运行在业务层上的enterprise bean 来进行处理。

业务层组件

业务层代码的逻辑用来满足银行,零售,金融等特殊商务领域的需要,由运行在业务层上的enterprise bean 进行处理. 下图表明了一个enterprise bean 是如何从客户端程序接收数据,进行处理(如果必要的话),并发送到EIS 层储存的,这个过程也可以逆向进行。
有三种企业级的bean: 会话(session) beans,实体(entity) beans,和消息驱动(message-driven) beans. 会话bean 表示与客户端程序的临时交互. 当客户端程序执行完后,会话bean 和相关数据就会消失. 相反,实体bean 表示数据库的表中一行永久的记录. 当客户端程序中止或服务器关闭时,就会有潜在的服务保证实体bean 的数据得以保存.消息驱动 bean 结合了会话bean 和 JMS的消息监听器的特性,允许一个业务层组件异步接收JMS 消息.

信息系统层

企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划(ERP),大型机事务处理,数据库系统,和其它的遗留信息系统. 例如,J2EE 应用组件可能为了数据库连接需要访问企业信息系统。
 
五、组件标准规范
J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):
1:JDBC(Java Database Connectivity)
JDBC API为访问不同数据库提供了统一的路径,像ODBC一样,JDBC开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具有平台无关性.
2:JNDI(Java Naming and Directory Interface)
JNDI API 被用于执行名字和目录服务.它提供了一致的模型来存取和操作企业级的资源DNS和LDAP,本地文件系统,或应用服务器中的对象.
3:EJB(Enterprise JavaBean)
J2EE技术之所以赢得广泛重视的原因之一就是EJB.它提供了一个框架来开发和实施分布式商务逻辑,由此很显著的简化了具有可伸缩性和高度复杂的企业级应用程序的开发.EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用.容器负责提供公用的服务,例如目录服务,事务管理,安全性,资源缓冲池以及容错性.但这里值得注意的是,EJB并不是实现J2EE的唯一路径.正是由于J2EE的开放性,使得所有的厂商能够以一种和EJB平行的方式来达到同样的目地.
4:RMI(Remote Method Invoke)
远程方法请求,RMI协议调用远程对象上的方法.它使用了序列化的方式在客户端和服务器之间传递数据.RMI是一种被EJB使用的更底层的协议.
5:Java IDL/CORBA(通用对象请求代理架构是软件构建的一个标准 )
在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起.他们可以创建Java对象并使之可在CORBA ORB中展开,或者他们还可以创建Java类并和其它ORB一起展开的CORBA对象客户.后一种方法提供了另外一种途径,通过它Java可以被用于将你的新的应用程序和旧的系统集合在一起.
6:JSP
JSP页面由HTML标准通用标记语言下的一个应用)代码和嵌入其中的Java代码组成.服务器在
页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端浏览器.
7:Java Servlet
Servlet 是一种小型的Java程序,它扩展了web服务器的功能.作为一种服务器的应用,当被请求时开始执行,这和CGI Perl脚本很相似.Servlet提供的功能大多和JSP类似,不过实现的方式不同.JSP通常是大多数的HTML代码中嵌入少量的Java代码,而servlet全部由java写成并且生成HTML.
8:XML
XML标准通用标记语言的子集)是一种可以用来定其它标记语言的语言.它被用来在不同的商务过程中共享数据.XML的发展和java是相互独立的,但是,它和java具有的相同目标是平台独立性.
9:JMS
MS是用于和面向对象消息的中间件相互通信的应用程序接口.它既支持点对点的域,又支持发布/订阅类型的域,并且提供了下列类型的支持:消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持.JMS还提供了另一种方式来对新系统和旧后台系统相互集成.
10:JTA
JTA定义了一种标准API,应用程序由此可以访问各种事务监控.
11:JTS
JTS是CORBA OTS事务监控的基本实现.JTS规定了事务管理的实现方法.该事务管理器是在高层支持java Transaction API规范,并且在较低层次实现OMG OTS specification 和Java对象.JTS事务管理器为应用程序服务器,资源管理器,独立的应用以及通信资源管理器提供了事务服务.
12:JavaMail
JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类.不仅支持SMTP服务器,也支持IMAP服务器.
13:JAF(JavaBeans Activation Framework)
JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
J2EE  结构图
 

 

 

六、javaEE应用的分层模型大致分为以下几层:
(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等原子操作。当然,如果采用

 
 
posted @ 2019-01-31 17:42  duaner92  阅读(153)  评论(0编辑  收藏  举报