`
isiqi
  • 浏览: 16029461 次
  • 性别: 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进行了封装和实现,并实现了一个简单...

    第18章 J2EE规范和EJB组件模型.ppt

    第18章 J2EE规范和EJB组件模型,层次越高了,好好学习吧,多学点对自己只有好处!

    《j2ee全实例教程》

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

    五方面了解J2EE开发技术

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

    J2EE全实例教程

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

    J2EE全实例教程.chm

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

    j2ee 企业级开发

    本文从五个方面对J2EE进行了比较全面的介绍。从J2EE的概念说起,到它的优势,到J2EE...本文分门别类的对J2EE中的服务,组件,层次,容器,API都做了比较详细的介绍,相信看完此文,读者会对J2EE有一个更清晰的认识。

    J2EE Web开发技术期待一次新的技术变革

    J2EE Web开发技术依然停留在Servlet/JSP/Struts等层次上。...Struts缺乏客户化组件模型、缺乏对非HTML展现技术的支持等天生局限,也无法使其成为J2EE下一代Web开发框架。J2EE Web开发技术,期待着一次新的变革。

    J2EE------- 全面简介

    本文从五个方面对J2EE进行了比较全面的介绍。从J2EE的概念说起,到它的优势,到J2EE...本文分门别类的对J2EE中的服务,组件,层次,容器,API都做了比较详细的介绍,相信看完此文,读者会对J2EE 有一个更清晰的认识。

    J2EE开发技术全接触

    本文从五个方面对J2EE进行了比较全面的介绍。从J2EE的概念说起,到它的优势,到J2EE典型...本文分门别类的对J2EE中的服务,组件,层次,容器,API都做了比较详细的介绍,相信看完此文,读者会对J2EE有一个更清晰的认识

    J2EE全面简介

    本文分门别类的对J2EE中的服务,组件,层次,容器,API都做了比较详细的介绍,相信看完此文,读者会对J2EE有一个更清晰的认识。一.J2EE的概念目前,Java2平台有3个版本,它们是适用于小型设备和智能卡的Java2平台...

    基于Flex与J2EE的整合应用

    基于Flex与J2EE的整合应用 传统的Web 开发,在表示层受到非常大的约束。基于RIA 的 Flex 技术不仅轻松解决了所有表示层的技术问题,让客户感受前 所未有的Web 应用体验,更主要的是,基于纯面向对象和组件的 架构,...

    普联架构设计技术方案.pptx

    1、开发平台概念—平台设计原则 基于模型驱动 业务模型、数据模型、软件模型 基于接口实现 业务接口、软件接口 基于灵活开放框架 技术框架、应用框架 清晰的层次结构 数据层次、软件层次 普联架构设计技术方案全文...

    宿舍管理系统

    J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业...

    Java常见的笔试面试题

    Java面试笔试题Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写。...所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

    健身房管理信息系统设计.doc

    J2EE(Java 2 Platform, Enterprise Edition)是SUN公司定义的一个开放式企业级应用规范,他提供了一个多层次的分布式应 用模型和一系列开发技术规范,多层次分布式应用模型是根据功能把应用逻辑分成多个层 次,每个层次...

    Java常见的面试笔试题目

    Java常见的面试笔试题目Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller...所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

    服务计算与大数据.pdf

    DCOM(Distributed Component Object Model 分布式组件对象模型) J2EE WWW (2)Web Service 是一种用 URI 标识的软件应用,它的接口和绑定可以通过 XML 文档定义、描述和发现。Web Service 支持通过基于 Internet ...

    数据交换平台的系统体系结构.doc

    体系结构大作业 专 业 ... 按系统的软件层次结构及web Services组件模型来表达一个基于标准、组件化、架构良好、具有很好扩展性的开放的 软件体系; 交换引擎基于XML的数据流交换,基于XSLT格式的交换规则定义。 电

Global site tag (gtag.js) - Google Analytics