J2EE平台技术及其结构
被考次数: 4次
被考频率: 中频率
答错率:    35%
知识难度:
考试要求: 熟悉     
知识路径:  > 电子商务系统程序设计基础  > 电子商务平台开发基础  > J2EE平台技术及其结构


本知识点历年真题试卷分布
>> 试题列表    
 

 
       J2EE应用概述
          J2EE简介
          目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。
          J2EE平台已经成为使用最广泛的Web程序设计技术。该技术主要支持两类软件的开发和应用。一类是做高级信息系统框架的Web应用服务器;另一类是在Web应用服务器上运行的Web应用程序。目前很多商业网站和管理信息系统大多采用J2EE平台作为首选的Web开发技术,每一个Web应用服务器都将需要企业开发和运行多种Web服务软件。
          J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。
          J2EE平台架构如下图所示。
          
          J2EE平台架构
          J2EE的优势
          J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制,表现在如下几个方面:
          (1)保留现存的IT资产。J2EE架构可以充分利用用户原有的投资,并且由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能被保留使用。
          (2)高效的开发。J2EE允许公司把一些通用的、很烦琐的服务端任务交给中间供应商去完成。这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。高级中间件供应商提供状态管理服务和持续性服务等。
          (3)支持异构环境。J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件,把它们部署到异构环境中,节省了由自己制订整个方案所需的费用。
          (4)可伸缩性。基于J2EE平台的应用程序可被部署到各种操作系统上。J2EE领域的供应商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。
          (5)稳定的可用性。一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要。J2EE部署到可靠的操作环境中,它们支持长期的可用性。
          J2EE的结构
          这种基于组件,具有平台无关性的J2EE结构使得J2EE程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且J2EE服务器以容器的形式为所有的组件类型提供后台服务。容器和服务容器设置定制了J2EE服务器所提供得内在支持,包括安全,事务管理,JNDI(Java Naming and Directory Interface)寻址,远程连接等服务,以下列出最重要的几种服务:
          .J2EE安全(Security)模型,可以配置Web组件或Enterprise Bean(服务器端组件模型),这样只有被授权的用户才能访问系统资源。每一客户属于一个特别的角色,而每个角色只允许激活特定的方法。
          .J2EE事务管理(Transaction Management)模型,指定组成一个事务中所有方法间的关系,这样一个事务中的所有方法被当成一个单一的单元。当客户端激活一个enterprise bean中的方法,容器介入管理事务。因为有容器管理事务,在enterprise bean中不必对事务的边界进行编码。只需在布置描述文件中声明enterprise bean的事务属性,而不用编写并调试复杂的代码。容器将读此文件并处理此enterprise bean的事务。
          .J2EE远程连接(Remote Client Connectivity)模型,管理客户端和enterprise bean间的底层交互。
          .生存周期管理(Life Cycle Management)模型,管理enterprise bean的创建和移除,一个enterprise bean在其生存周期中将会历经几种状态。容器创建enterprise bean,并在可用实例池与活动状态中移动它,而最终将其从容器中移除。即使可以调用enterprise bean的create及remove方法,容器也将会在后台执行这些任务。
          .数据库连接池(Database Connection Pooling)模型,因为获取数据库连接是一项耗时的工作,而且连接数非常有限。容器通过管理连接池来缓和这些问题。enterprise bean可从池中迅速获取连接。
          J2EE的核心API与组件
          J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述:
          .JDBC(Java Database Connectivity):JDBC API为访问不同的数据库提供了一种统一的途径。JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性。
          .JNDI(Java Name and Directory Interface):被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源,本地文件系统或应用服务器中的对象。
          .EJB(Enterprise JavaBean):J2EE技术提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。正是由于J2EE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。
          .RMI(Remote Method Invoke):正如其名字所表示的那样,RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。
          .Java IDL/CORBA:Java IDL(Interface Definition Language)可实现网络上不同平台上的对象相互之间的交互。在Java IDL的支持下,开发人员可以将Java和CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)集成在一起。
          .JSP(Java Server Pages):JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
          .Java Servlet:Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而Servlet全部由Java写成并且生成HTML。
          .XML(Extensible Markup Language):XML是一种可以用来定义其他标记语言的语言。它被用来在不同的商务过程中共享数据。XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,可以得到一个具有平台独立性的解决方案。
          .JMS(Java Message Service):JMS是用于和面向消息的中间件相互通信的应用程序接口。它既支持点对点的域,又支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递、事务型消息的传递、一致性消息和具有持久性的订阅者支持。
          .JTA(Java Transaction Architecture):JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。
          .JTS(Java Transaction Service):JTS是一个组件事务监视器。其规定了事务管理器的实现方式。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。
          .JavaMail:JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。
          .JAF(JavaBeans Activation Framework):JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。
       J2EE体系结构
       J2EE是一种利用Java2平台来简化与多级企业解决方案的开发、部署和管理相关复杂问题的体系结构。J2EE提供了一套完整的开发多层分布式应用的技术和设施,是为当今众多厂商支持的多层分布式应用的标准,为快速灵活地建立大规模的分布式企业应用提供了高效的解决方案。
       J2EE使用多层分布式的应用程序模型,根据功能的不同把应用程序逻辑划分为各个组件。一个组件应该被安装在什么地方,取决于该组件属于多层J2EE应用的哪一层。这些层分别是客户层、Web层、业务层、企业信息系统层(EIS),结构如下图所示。
       
       J2EE体系结构图
          客户层
          J2EE应用可以是基于Web的,也可以是不基于Web的。在一个基于Web的J2EE应用中,用户的浏览器在客户层中运行,并从一个Web服务器下载Web层中的静态HTML页面或者由JSP/Servlet生成的动态HTML页面。在一个不基于Web的J2EE应用中,一个独立客户程序,或者一个不是运行在HTML页面中,而是运行在其他基于网络的系统(如手持设备或者汽车电话)中的Applet程序。
          Web层
          J2EE Web组件可以由JSP页面、基于Web的Applet(Java创建的基于HTML的程序)以及显示HTML页面的Servlet(一种服务器端的Java应用程序,可以生成动态的Web页面)组成。Web层可能包含一个JavaBean(Java语言写成的可重用组件)来管理用户输入,并将输入发送给在业务层中运行的EJB(Enterprise JavaBean)来处理。Web层也称表示层。
          业务层
          作为满足某个特定业务领域(如银行、零售或金融业)需要的业务逻辑代码由运行在业务层的EJB(Enterprise JavaBean)来执行。一个EJB从客户程序处接收数据,在需要的情况下对数据进行处理,再将数据发送到企业信息系统层存储。一个EJB还从存储中检索数据,并将数据送回客户程序。运行在业务层的EJB依赖于容器提供诸如事务、生命期、状态管理、多线程及资源缓冲池等十分复杂的系统级功能。业务层也称EJB层。
          业务层和Web层一起构成了J2EE应用的中间层。
          企业信息系统层(EIS)
          企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统。例如企业资源计划(EPR)、大型机事务处理(Mainframe Transaction Processing)、数据库系统等。J2EE应用组件因为某种原因(如访问数据库)可能需要访问企业信息系统。
       J2EE框架
       框架(Framework)是一个提供了可重用的公共结构的半成品。它为我们构件新的应用提供了极大的方便。一方面给我们提供了可以直接使用的工具,同时给我们提供了可重用的设计。框架这个词最早出现在建筑领域,指的是在建造房屋前构建的建筑骨架。对应用程序来说,“框架”的意义也在于此,是应用程序的骨架。开发者可以在这个骨架上添加自己的东西,完成符合自己需要的应用系统。
       框架保证了我们程序结构风格统一,从企业的角度来说,降低了培训成本和软件的维护成本。框架在结构统一和创造力之间维持着一个平衡。框架和组件的意义是不同的。组件是构件应用程序的零件。而框架是一系列预装的,组合在一起的“零件”,而且还定义了“零件”间协同工作的规则。
          Struts框架
          Struts是一种基于Java技术的JSP Web开发框架,Web应用程序开发人员通过Struts框架即可充分利用面向对象设计、代码重用以及“一次编写、到处运行”的优点。Struts提供了一种创建Web应用程序的框架,对应用程序的显示、表示和数据的后台代码进行了抽象。
          Struts是对MVC(Model View Controller)设计模式的一种实现。MVC设计模式为构建可扩展、可重用的代码打下了坚实的基础。以MVC设计模式构造软件,可以使软件结构灵活、重用性好、扩展性好。
          MVC设计模式目的就是将模型(业务逻辑)和视图(页面展示)分离,使模型和视图可以独立修改,而不会影响到对方。在MVC中,M指的是Model(模型),表示程序处理业务逻辑的部分;V指的是View(视图),表示程序负责展示数据、获得用户输入的部分;C指的是Controller(控制器),负责从V接收用户输入,调用M,返回数据到V。我们可以看出,C在MVC起到“中介”的作用,从而保证M和V不会直接交互。
          在Struts中,ActionServlet起着一个控制器的作用。视图主要由JSP来控制页面输出。模型在Struts中,主要存在三种bean,分别是:Action、ActionForm、EJB或者Java Bean。Struts框架结构如下图所示。
          
          Struts框架结构图
          Spring框架
          Spring是轻量级的J2EE应用程序开源框架。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。并且Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
          Spring的核心是个轻量级容器(container),是实现了IoC(Inversion of Control)模式的容器;Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其他的框架方案加以替代。
          Spring支持AOP(Aspect-Oriented Programming),Spring也提供MVC Web框架的解决方案,并且可以将MVC Web框架与Spring结合。Spring还提供其他方面的整合,如JDBC(Java Data Base Connectivity,Java数据库连接)、事务处理等。Spring框架结构如下图所示。
          
          Spring框架
          Spring的核心概念是IoC(Inversion of Control),IoC的抽象概念是“依赖关系的转移”,中文可以译为“控制反转”。IoC表现在:高层模块不应该依赖低层模块,而是模块都必须依赖于抽象;实现必须依赖抽象,而不是抽象依赖实现;应用程序不应依赖于容器,而是容器服务于应用程序。
          IoC是由容器控制程序之间的关系,而非由程序代码直接操控。控制权由应用代码转到了外部容器。控制权的转移,就是所谓的反转。使用IoC,对象是被动的接受依赖类,容器在实例化的时候主动将它的依赖类注入给它。
          Spring所采用的是依赖注入(Dependency Injection)。依赖注入的意义是:保留抽象接口,让组件依赖于抽象接口,当组件要与其他实际的对象发生依赖关系时,通过抽象接口来注入依赖的实际对象。依赖注入的目标是为了提升组件重用的几率,并为系统搭建一个灵活和可扩展的平台。
          另外,Spring提供一种无侵入式的高扩展性框架,不需要代码中涉及Spring专有类,即可纳入Spring容器进行管理。org.springframework.beans包中包括了这些核心组件的实现类。
          Spring框架另一个重要方面是对AOP提供了一种优秀的实现。AOP(Aspect Oriented Programming),可翻译为“面向切面编程”。AOP是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。AOP组件与应用代码无关,应用代码可以脱离AOP组件独立编译。Spring中的AOP通过运行期动态代理模式实现。
          总结起来Spring框架的主要功能包括:
          ①基于Java Beans的配置管理,减少各组件间相互依赖。
          ②一个核心的,全局适用的bean工厂。
          ③一个一般抽象化的层面来管理数据库间的数据处理。
          ④建立在框架内对Java数据处理API和单独的JDBC数据源的一般性策略。
          ⑤Web应用中的MVC框架,基于核心的Spring功能,支持多种产生视图的技术。
          ⑥大量的AOP框架以提供诸如数据处理管理的服务。
          Hibernate框架
          Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。
          “对象/关系”映射(O/R Mapping)是一门非常实用的工程技术,它实现了Java应用中的对象到关系数据库中的表的持久化。使用元数据(meta data)描述了对象与数据库间的映射。Hibernate是非常优秀、成熟的O/R Mapping框架,它提供了强大的对象和关系数据库映射以及查询功能。Hibernate体系结构如下图所示。
          
          Hibernate体系结构
          Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口分别加以介绍。
          (1)Session接口。Session接口负责执行被持久化对象的增删改查操作(增删改查的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。
          (2)SessionFactory接口。SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
          (3)Configuration接口。Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置,读取配置,然后创建SessionFactory对象。
          (4)Transaction接口。Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
          (5)Query和Criteria接口。Query和Criteria接口负责执行各种数据库查询。它可以使用HQL(Hibernate Query Language,官方推荐的Hibernate检索方式)或SQL语句两种表达方式。
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有