`
isiqi
  • 浏览: 16490028 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

J2EE 层次 模型 组件 服务

阅读更多

以下陈述均摘自网络的文章,自己总结归并

J2EE的层次结构

早期的网络系统设计常常采用三层结构。最常见的结构,就是表示( presentation )层 , 领域( domain )层 , 以及基础架构( infrastructure )层。

  n层结构的提出是为了适应当前B/S模式开发WEB Application的需要而提出的。传统的Brown模型是指:表示层( Presentation ),控制 / 中介层( Controller/Mediator ),领域层( Domain ) , 数据映射层( Data Mapping ) , 和数据源层( Data Source )。它其实就是在三层架构中增加了两个中间层。控制 / 中介层位于表示层和领域层之间,数据映射层位于领域层和基础架构层之间。

  J2EE规范提出了自己的层次结构。

  

J2EE的基本原则之一,是使得各个层的实现解除耦合或耦合最小化。最终实现可以任意的切换某个层的实现。

例如,在数据映射层,可以采用EJB的BMP,CMP,也可以采用Hibernate等

ORMapping,或者采用JDO。这由部署的环境来决定。

图1. J2EE应用模型

J2EE 使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,sun设计J2EE的初衷正是为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议??通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,这四层分别是运行在客户端机器上的客户端层(Client Tier)、 运行在Web服务器上的Web层(Web Tier)、运行在EJB服务器上的业务层(Business Tier)和 运行在EIS服务器上企业信息系统层(Enterprise Information System Tier)其中Web层和业务层共同组成了三层J2EE应用的中间层,其他两层是客户端层和存储层或企业信息系统层。一般情况下,许多开放商把Web服务器和EJB服务器产品结合在一起发布,称为应用服务器或J2EE服务器。J2EE平台规范也定义了相应层的组件:
I. 客户端层组件
应用客户端程序和浏览器是客户端层组件。客户端层组件可以是基于Web方式的即作为Web服务器的浏览器,也可以是基于传统方式的(非基于Web方式)即独立的应用程序,可以完成瘦客户机无法完成的任务。
II. Web层组件
Java Servlet和JavaServer Pages(JSP)是Web层组件。如图2所示的客户层那样,Web层可能包含某些 JavaBean 对象来处理用户输入,并把输入发送给运行在业务层上的Enterprise Bean 来进行处理。按照J2EE规范,静态的HTML页面和Applets不算是Web层组件。这里的JavaBean和EJB(Enterprise JavaBean)除了共用“JavaBean”这个名字外,这两种组件模式完全没有关系。许多文章把EJB作为原始的“JavaBean”的扩展,这是错误的。EJB并没有扩展或使用JavaBean组件模式。最初的JavaBean(java.beans包)在进程内部(intraprocess)使用,而EJB(javax.ejb包)是在进程间(interprocess)使用的组件。即最初的JavaBean不是为分布式组件而设的。它是最好的组件模式,可能是至今发现的最好的过程内部开发的组件模式,但它不是一个服务器端的组件模式。EJB则能解决在三层结构中由管理分布式商务对象多带来的问题。


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


IV. 企业信息系统层组件
处理企业信息系统软件包括企业基础建设系统例如企业资源计划 (ERP), 大型机事务处理, 数据库系统,和其它的遗留信息系统组成了企业信息系统层。 例如,J2EE应用组件可能为了数据库连接需要访问企业信息系统。

J2ee模型与组件

Web容器和EJB容器具有明显的区分——这意味着他们彼此相对独立,一个企业的Web容器和EJB容器可以是来自不同厂商的产品。

两个容器都可以享受企业服务。换句话说,Web容器内的组件和EJB容器内的组件一样可以进行数据库访问,使用电子邮件和目录服务,发送消息等。

组件只有通过以驱动程序和适配程序形式存在的企业服务才能访问EIS资源

所有的应用服务器环境都有Java虚拟机——即所有的应用服务器上都有Java运行时环境。

在项目实施过程中,一般说来,把应用组件经常需要用到的自定义服务和库单独列开来是非常有必要的。在上述模型中,这些服务被称为“自定义组件库”。

“自定义组件库”根据具体项目的需求而开发,并非是J2EE应用服务器标准的组成部分。通常这些库会随着项目的进展而趋向于越来越大。

另外一个现象也很典型,那就是开发人员在访问企业服务时,会发现总有一些核心服务是最常用到的。把这些服务列开,固化为单独的一层在实践中值得一试,这一层对应于图1中的“服务访问库”。

简而言之,“服务访问库”应该是J2EE API的一个子集,因企业项目的不同而不同。需要指出的是这里的“自定义组件库”和“服务访问库”并未见于Sun公司正式发布的J2EE应用编程模型中,但在实际开发中,这两个库的存在是必要的。

J2EE应用组件

在看过了组件和服务的关系之后,接下去我们再来对它们进行逐一考察,理解在一个复杂的企业计算方案中它们各自扮演的角色。

Web容器组件

·Java Servlet

servlet是在服务器一端,运行于Web容器内的表示逻辑组件。正如applet扩展了Web浏览器的基本功能一样,servlet扩展了Web服务器的功能——提供编程能力以及动态生成Web页的能力。

servlet的主要功能是接收来自客户端Web浏览器的HTTP请求,处理输入参数,再把结果以浏览器可以显示的HTTP方式进行回传。

例如,我们可以用servlet开发一个简单的基于Web的认证系统。该servlet接收来自客户端浏览器的用户名和口令字;处理认证请求;再将认证结果发送回去。

除了接收来自客户端浏览器的请求外,servlet之间也可以相互调用。

·Java Server Page(JSP)

虽然servlet可以产生HTTP输出,但显示处理结果的更好的办法还是使用JSP组件(Java server page,Java服务器页面)。JSP和servlet一样,也是运行在Web容器内的表示逻辑层组件,两者在功能上略有不同。

JSP结合了HTML和Java,也就是说,JSP既可以包含HTML代码也可以包含Java代码。其中HTML代码直接发送给浏览器,而Java代码则在剥离之后,留由服务器解释执行。因此JSP对于提高HTML标签的智能化非常有用。

在JSP内添加可重用的Java代码块的最好办法就是使用JSP标签库。JSP标签库开发简单,它既方便了在HTML标签内增加Java代码,又可以使得HTML代码和Java代码能很好地隔离开,易于维护。

在Web容器内,JSP常常作为servlet的补充,用于显示servlet的处理结果。此外,JSP和Javabean的结合使用也非常典型。

·Javabean

Javabean是基本的数据模型组件,早在J2EE技术出现之前就出现了。在J2EE体系结构中,Javabean常见于客户层和表示逻辑层,和applet或JSP结合使用。

bean组件构造容易, 只要为一段Java代码定义些适当的属性即可。例如,一个带有少量变量的简单Java类,再添加些为变量定义的get_attribute()和set_attribute()等方法,就是一个标准bean组件了。

除了命名上的相似外,Javabean和企业Javabean(即EJB)没有什么大的关联。EJB完全是另一种类型的企业Java应用组件。

EJB容器组件

·Enterprise Javabean(EJB)

企业Javabean或EJB是J2EE中间件中的分布式、可伸缩业务逻辑组件。在企业Java项目中,EJB组件用于封装核心业务逻辑和数据模型元素。

EJB组件的运行环境就是EJB容器,J2EE在规范中定义了应用EBJ代码和容器环境两者的关系(contract)。

在企业应用开发过程中,开发人员编写EJB时需要符合一定的接口规范。接口中定义的方法,部分由开发人员自主实现,部分由EJB容器供应商(或应用服务器开发商)提供。通过这种机制,EJB实现了业务逻辑实施(开发者编写的方法)和基础设施供应(容器提供的方法)之间的隔离。

一个EJB组件可以和另一个EJB组件进行会话,后者既可能与前者在同一容器中,也可能位于远程服务器的另一个容器中。如上图1所示,EJB组件可以使用所有的企业服务,以及自定义组件库和服务访问库。

EJB规范定义了以下四种类别的EJB,以满足不同应用场合的需要:

· 无状态会话Bean

· 状态会话Bean

· 实体Bean

· 消息驱动Bean

综上所述,J2EE各组件——EJB、servlet、JSP等等的结合,最终构成了基于MVC,具有高度灵活性和可重用性的企业应用体系。

J2EE企业服务

前面已经提到过,J2EE企业服务是提供给Web容器和EJB容器的应用组件使用的。组件通过企业服务访问EIS资源。访问需求多种多样,可能简单如数据库操作,或复杂如消息传递/CICS环境下的大型机通信。

J2EE服务API为诸如数据库访问和目录访问等特定的服务提供一个标准Java接口,该接口完全隐藏具体实施细节。因此,程序员只需面对标准API,而不必和特定资源打交道,这有助于他们轻松使用各种不同的服务。

例如,从J2EE应用组件的角度来看,访问Sybase数据库和访问Oracle数据库没什么两样。所有的不同只在于需要选择不同的JDBC驱动程序和不同的数据库文件。由于几乎不需要做任何代码级修改,程序员可以毫不费力地访问各种不同的数据库。

JDBC Java Data Base Connectivity

与 ODBC类似,JDBC提供了一个标准、透明的数据库连接的公共编程接口,各开发商根据JDBC的标准来实现其底层的驱动程序。J2EE组件通过统一的接口访问不同种类的关系型数据库。由于应用代码独立于特定的数据库调用,因此当需要从一个数据库转到另一个数据库时,代码修改开销可以降到最低。

JNDI(Java Naming and Directory Interfaces ,Java命名/目录接口)

在分布式环境中,命名和目录服务使得资源在全网络范围内的合理分布成为可能。每个资源在分布式层次树形结构中都具有唯一的名字。客户程序通过访问目录服务获得所需资源的句柄。 JNDI为企业命名/目录服务调用制定标准,提出了一些统一的接口,由各开发商对这些接口加以实现。当前市场上目录服务产品主要有LDAP、Novell 目录服务和Active目录服务等,JNDI在这些开发商产品之上定义了一个服务层,这样,使用者就可以通过统一的界面去访问底层的各种服务。

JMS(Java Messaging Services,Java消息服务

消息服务在异构环境下扮演着重要角色。企业大型机信息系统或其他旧有遗留系统与J2EE中间件组件这样的全异构系统之间的通信连接,就是靠在两端安装消息服务实现的。通信时,两端应用程序各自与本端的消息服务进程进行会话,网络内消息服务进程之间则通过点到点或异步方式依次传递消息。

JMSAPI 实现了消息服务产品调用的标准化,目前市场上此类产品主要有IBM的MQ series、微软的MSMQ、TIBCO的Rendezvous。JMS在这些产品各自的消息API调用之上附加定义了一层,将所有这些产品统一于一个接口。这样,J2EE应用就可以与特定的开发商产品实施保持相对独立。

Javamail/JAFJavaBeans Activation Framework

正如名字所示,Javamail API为J2EE组件提供e-mail服务。它位于SMTP和POP3之类特定邮件服务实施上层,为所有公共服务如电子邮件格式识别、邮件收发和判断是否有附件等,提供统一访问接口。

Javamail API与JAF(Javabean Activation Framework)同步工作。

RMI(Remote Method Invocation,远程方法调用—IIOP/Java IDL

这两种技术实现J2EE组件和CORBA组件之间的双向通信。Java IDL是推荐使用的在J2EE环境中访问CORBA对象的方法;反之,RMI—IIOP则是在CORBA客户程序中调用J2EE组件的方法。

JAX (Java API for XML

Java XML API方便使用者在J2EE环境中调用XML文档。JAX API提供的服务包括XML语法分析(SAX和DOM),XML与Java对象的绑定,XML消息发送和XSLT转换等。

JAX支持Web服务,方便J2EE业务逻辑组件适用于各种不同环境中。

JCA (Java连接器)

JCA 用来连接J2EE应用程序和EIS体系结构,如ERP、大型机事务处理、数据库以及其他遗留信息系统等,帮助开发者进行不同种类的EIS之间的无缝集成。 JCA连接器一方面与J2EE应用服务器建立系统级连接,另一方面与访问EIS资源的应用组件建立应用级连接。和其他服务API类似,JCA API在统一接口的同时,为开发商开发各具特色的资源适配器产品提供空间。

JTA(Java Transaction API,Java事务接口

JTA为 J2EE 平台提供了分布式事务服务

分享到:
评论

相关推荐

    基于J2EE的WebGIS的模型研究

    遵循此系统模型,深入探讨了系统的数据表示层、Web服务层、GIS应用服务层和数据服务层实现中的关键技术,并以ArcIMS的GIS组件为基础,对系统GIS应用服务层中的核心部分——GISEJB进行了封装和实现,并实现了一个简单...

    J2EE架构师手册(j2ee高级进阶,j2ee深层次必备)

    J2EE作为一个企业级的应用开发平台,它提供了丰富的组件和服务,如Servlet、JSP、EJB、JMS、JTA、JPA等,用于构建分布式、多层的复杂应用程序。 1. **Servlet与JSP**:Servlet是J2EE中的基础组件,负责处理HTTP请求...

    J2EE完全参考手册-J2EE概述-pdf

    1. **J2EE 架构**:J2EE 平台基于组件模型,分为多个层次,包括客户端层、Web 层、业务逻辑层(也称为企业 Bean 层)和数据访问层。这种分层设计有助于代码复用、模块化开发以及系统扩展。 2. **容器和服务**:J2EE...

    清华大学J2EE—PPT.rar

    J2EE组件模型主要包括三个层次:客户端、Web层和业务逻辑层。客户端可以是基于浏览器的瘦客户端,也可以是富客户端应用。Web层包括Servlet、JSP(JavaServer Pages)和JSF(JavaServer Faces),用于处理HTTP请求。...

    J2EE体系架构介绍.ppt

    该模型包括多个层次,包括表示层、业务逻辑层、数据访问层和数据存储层。其中,表示层负责处理客户端的请求和响应,业务逻辑层负责处理业务逻辑,数据访问层负责访问数据库,数据存储层负责存储数据。 HandsOnJ2EE...

    J2EE的简介

    J2EE的核心是一套技术规范和服务架构,涵盖了各种组件、服务和层次,确保了不同J2EE平台之间的兼容性。开发者可以利用J2EE开发的应用程序在各种遵循J2EE规范的应用服务器上进行部署,降低了维护和升级的成本。J2EE的...

    《j2ee全实例教程》

    多层次分布式应用模型是指根据功能把应用逻辑分成多个层次,每个层次支持相应的服务器和组件,组件在分布式服务器的组件容器中运行(如Servlet组件在Servlet容器上运行,EJB组件在EJB容器上运行),容器间通过相关的...

    J2ee架构分析设计

    J2EE采用多层分布式的应用模型,这种模型将应用逻辑分解成多个组件,每个组件根据其功能定位在不同的层级上,分布在不同的物理或逻辑机器上。这一架构不仅提高了系统的可维护性和可扩展性,还允许各层独立发展和升级...

    开发J2EE Web应用

    例如,MVC(Model-View-Controller)模式被广泛应用于构建清晰的结构层次,分离业务逻辑、用户界面和数据模型。 #### 6. 集成测试 由于J2EE应用通常涉及多个组件之间的交互,因此集成测试成为确保系统稳定性和性能...

    J2EE概述(PPT)

    **J2EE层次结构** J2EE应用通常按照分层架构组织,包括: 1. 客户端层(Client Layer):用户界面,如Web浏览器或桌面应用程序。 2. Web层(Web Tier):负责处理客户端请求,包括Servlets和JSP。 3. 业务逻辑层...

    j2ee 平台下的分布式项目管理模型及实现

    工作流管理系统的层次结构包括用户界面层、网络服务层等,确保各个层级之间的高效协作。 - **用户界面层**:提供与用户的交互界面,可以是基于Web的或者非Web的。 - **网络服务层**:处理用户的请求,将请求转发至...

    J2EE中文全面简介

    J2EE的核心理念是组件化开发,通过预定义的组件模型,如Java Servlets、JavaServer Pages (JSP)、Enterprise JavaBeans (EJB),以及一系列服务和API,简化了复杂的后端系统开发。 1. **J2EE架构** J2EE架构由多个...

    j2ee中文版 j2ee框架介绍

    J2EE 提供了一整套服务、接口和组件模型,旨在简化多层分布式应用程序的构建,特别是那些基于Web的应用程序。这个框架的核心目标是提供可移植性、可伸缩性和安全性,以满足大型企业的业务需求。 J2EE 框架包括多个...

    J2EE全实例教程 doc格式.doc

    它定义了一个多层次的分布式应用模型,涵盖了从客户端到服务器端的各种组件,使得开发过程更加标准化和简化。J2EE的主要目标是提供一套标准,使得开发者能够跨平台地开发、部署和管理复杂的企业应用。 2. **J2EE...

    J2EE实验.zip

    你可能需要创建模型类、视图和控制器组件,理解它们之间的协作。 11. **JUnit测试**:为了确保代码质量,实验可能包含使用JUnit进行单元测试的部分,学习如何编写和执行测试用例。 12. **版本控制**:实验中可能会...

    五方面了解J2EE开发技术

    J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2...文中还分门别类的对J2EE中的服务,组件,层次,容器,API都做了比较详细的介绍。

    J2EE详细指南大全.doc

    J2EE组件模型主要包括三个层次:客户端组件、Web组件和EJB(Enterprise JavaBeans)组件。 - **客户端组件**:包括传统的Java Applet和Java应用程序,以及基于Web的富客户端应用,如JavaFX或AJAX技术构建的Web应用...

    J2EE教程.rar

    总结来说,J2EE 是一个强大的平台,为企业级应用提供了标准化的开发环境和组件模型。通过深入学习 J2EE,开发者可以构建可扩展、高性能、高度可靠的网络应用程序,满足复杂的业务需求。J2EE教程中的内容可能涵盖这些...

Global site tag (gtag.js) - Google Analytics