基于中间件J2EE技术规范的Web应用开发分析与研究

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:vvf021
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:目前WEB服务体系架构存在标准限制且需要支持多种类型的客户端的问题,因而使得WEB服务的开发极具挑战。文章通过基于J2EE的WEB应用开发的所需的J2EE规范中的基本组件和容器进行了分析,说明了如何利用现有的技术来应对WEB应用开发所面临的问题,并对一些基本的机制作了说明。在此基础上,提出了一种基于标准、新的体系架构,满足企业的WEB应用开发。
  关键词:WEB服务;体系结构;JSP;组件;中间件
  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)33-1402-04
  Analysis and Research of WEB Applicational Development Based of the Middlware J2EE
  YUAN Jian-qiu1, ZHOU Jia-ji1, LI Jun2, CHU Yuan1
  (1.School of Information Engineering, Chengdu University of Technology, Chengdu 610059, China; 2.College of Communication and Engineering Technology, Agriculture University of Sichuan, Ya’an 625014, China)
  Abstract: The current WEB services architecture have standard limits and must supply to the multi-type client ends.How to improve the WEB services become very difficult.With the reference to core-components and container of the J2EE,this thesis explains how to use the existing technology to solve of the WEB Applicational Development and it indicates the base mechanisms tha how to act in the WEB services environment.Based on this ,it analyses how to meet enterprise’s require under the direction of the current WEB Applicational Development.
  Key words: WEB services; architecture; jsp; component; middleware
  1 引言
  计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。这一切都对新一代的软件开发提出了新的需求。在这种分布异构环境中,通常存在多种硬件系统平台(如PC,工作站,小型机等),在这些硬件平台上又存在各种各样的系统软件(如不同的操作系统、数据库、语言编译器等),以及多种风格各异的用户界面,这些硬件系统平台还可能采用不同的网络协议和网络体系结构连接。如何把这些系统集成起来并开发新的应用是一个非常现实而困难的问题。
  为解决分布异构问题,人们提出了中间件(middleware)的概念。中间件是位于平台(硬件和操作系统)和应用之间的通用服务,如图1所示,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。当前中间件技术的两大阵营J2EE和.Net。IDC给出的一个定义:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信什么是J2EE?它和普通的Java有什么不同?J2EE全称为Java2 Platform Enterprise Edition。 “J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境,它提供了:1) 宿主应用的一个运行基础框架环境。2) 一套用来创建应用的Java扩展API[1]。”从整体上讲,J2EE是使用Java技术开发企业级应用的一种事实上的工业标准(Sun公司出于其自身利益的考虑,至今没有将Java及其相关技术纳入标准化组织的体系),它是Java技术不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE和适用于企业级应用的J2EE。Sun推出J2EE的目的是为了克服传统Client/Server模式的弊病,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE规范分别开发了不同的J2EE应用服务器,J2EE应用服务器是J2EE企业级应用的部署平台。由于它们都遵循了J2EE规范,因此,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器上。J2EE是很多技术的集合体,并且还在成长中。 你会遇到很多专有名词:比如(X)HTML,Servlet/JSP,JDBC,JMS,JNDI,EJB,XML,Web Service……。尤其是XML和Web Service正在快速成长。大体上J2EE可以分成3个主要应用:Servlet/JSP,EJB,XML/Web Service 和一些支撑技术例如JDBC和JNDI。
  
  2 J2EE Blueprints设计模型
  为了推广并规范化使用J2EE架构企业级应用的体系架构,Sun同时给出了一个建议性的J2EE应用设计模型:J2EE Blueprints。J2EE Blueprints提供了实施J2EE企业级应用的体系架构、设计模式和相关的代码,通过应用J2EE Blueprints所描述的体系模型,能够部分简化架构企业级应用这项复杂的工作。J2EE Blueprints是开发人员设计和优化J2EE组件的基本原则,同时为围绕开发工作进行职能分工给出了指导性策略,以帮助应用开发设计人员合理地分配技术资源。
  
  图2 J2EE服务器和容器(Container)
  2.1 J2EE容器
  下面我们参照J2EE Blueprints,结合最新版的J2EE规范(J2EE 1.4),从整体上阐述如何使用J2EE架构企业级应用。容器(Container)是组件和支持组件功能的底层特定平台(如数据库)之间的接口。在运行Web组件、企业Bean或者J2EE应用程序客户端之前,你必须将它们装配到一个J2EE应用程序中,并部署它们到容器中。
  图2给出了使用J2EE架构企业级应用的体系架构。J2EE将组成一个完整企业级应用的不同部分纳入不同的容器(Container),每个容器中都包含若干组件(这些组件是需要部署在相应容器中的),同时各种组件都能使用各种J2EE Service/API。J2EE容器包括如下内容:
  2.1.1 Web容器服务器端容器
  Web容器服务器端容器包括两种组件JSP和Servlet,JSP和Servlet都是Web服务器的功能扩展,接受Web请求,返回动态的Web页面。Web容器中的组件可使用EJB容器中的组件完成复杂的商务逻辑。
  2.1.2 EJB容器服务器端容器
  EJB容器服务器端容器,包含的组件为EJB(Enterprise JavaBeans),它是J2EE的核心之一,主要用于服务器端的商业逻辑的实现。EJB规范定义了一个开发和部署分布式商业逻辑的框架,以简化企业级应用的开发,使其较容易地具备可伸缩性、可移植性、分布式事务处理、多用户和安全性等。
  2.1.3 Applet容器客户端容器
  Applet容器客户端容器包含的组件为Applet。Applet是嵌在浏览器中的一种轻量级客户端,一般而言,仅当使用Web页面无法充分地表现数据或应用界面的时候,才使用它。Applet是一种替代Web页面的手段,我们仅能够使用J2SE开发Applet,Applet无法使用J2EE的各种Service和API,这是为了安全性的考虑。
  2.1.4 Application Client容器
  Application Client容器(客户端容器),包含的组件为Application Client。Application Client相对Applet而言是一种较重量级的客户端,它能够使用J2EE的大多数Service和API。
  通过以上这四个容器,J2EE能够灵活地实现前面描述的企业级应用的架构。在View部分,J2EE提供了三种手段:Web容器中的JSP(或Servlet)、Applet和Application Client,分别能够实现面向浏览器的数据表现和面向桌面应用的数据表现。Web容器中的Servlet是实现Controller部分业务流程控制的主要手段;而EJB则主要针对Model部分的业务逻辑实现。至于与各种企业资源和企业级应用相连接,则是依靠J2EE的各种服务和API。
  在J2EE的各种服务和API中,JDBC和JCA用于企业资源(各种企业信息系统和数据库等)的连接,JAX-RPC、JAXR和SAAJ则是实现Web Services和Web Services连接的基本支持J2EE的各种组件。
  
  图3 JSP Servlet形式
  3 J2EE的各种组件、服务和API
  我们就J2EE的各种组件、服务和API,进行更加详细的阐述,看看在开发不同类型的企业级应用时,根据各自需求和目标的不同,应当如何灵活使用并组合不同的组件和服务。
  3.1 Servlet
  Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页面。与传统的CGI和许多其它类似CGI的技术相比,Java Servlet具有更高的效率并更容易使用。对于Servlet,重复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。
  一个Servlet是一个Java类。它处理Http(s)请求并作出响应,包括返回一个HTML页面或转交给其他URL处理。 Servlet必须运行在一个Web Container例如Tomcat中。 Servlet必须是javax.servlet.http.Http Servlet的子类, 你可以继承doGet()或者doPost()方法,两者分别对应于Http(s)中的Get请求和Post请求。 11 我怎么获得Http请求里的参数? 答:HttpRequest的getParameter()方法。例如:String paramValue = request.getParameter("paramName"); 12 我怎么返回结果? 答:你可以利用相关API打开一个输出流,并向流中直接写入一个HTML页面。 但是作者完全不赞成这样做。一方面这样做会很罗嗦。 另一方面从Model-View-Controller模式(在《J2EE核心模式》中被归为Front Controller模式)的观点来看, 你应当提供一些HTML或者JSP作为视图(view),而Servlet则根据请求参数决定转到哪一个视图。 你可以利用response.sendRedirect(...)方法或request.getDispatcher(...).forward()方法来实现。
  3.2 JSP
  JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术。从这一点来看,非常类似Microsoft ASP、PHP等技术。借助形式上的内容和外观表现的分离,Web页面制作的任务可以比较方便地划分给页面设计人员和程序员,并方便地通过JSP来合成。在运行时态,JSP将会被首先转换成Servlet,并以Servlet的形态编译运行,因此它的效率和功能与Servlet相比没有差别,一样具有很高的效率。
  3.3 EJB
  EJB定义了一组可重用的组件:Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。在装配组件时,所有的Enterprise Beans都需要配置到EJB服务器(一般的Weblogic、WebSphere等J2EE应用服务器都是EJB服务器)中。EJB服务器作为容器和低层平台的桥梁管理着EJB容器,并向该容器提供访问系统服务的能力。所有的EJB实例都运行在EJB容器中。EJB容器提供了系统级的服务,控制了EJB的生命周期。EJB容器为它的开发人员代管了诸如安全性、远程连接、生命周期管理及事务管理等技术环节,简化了商业逻辑的开发。EJB中定义了三种Enterprise Beans:
  1) Session Beans;
  2) Entity Beans;
  3) Message-driven Beans。
  3.4 JDBC
  JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准Java API编写数据库应用程序。JDBC API主要用来连接数据库和直接调用SQL命令执行各种SQL语句。利用JDBC API可以执行一般的SQL语句、动态SQL语句及带IN和OUT参数的存储过程。Java中的JDBC相当与Microsoft平台中的ODBC(Open Database Connectivity)。
  3.5 JMS
  JMS(Java Message Service,Java消息服务)是一组Java应用接口,它提供创建、发送、接收、读取消息的服务。JMS API定义了一组公共的应用程序接口和相应语法,使得Java应用能够和各种消息中间件进行通信,这些消息中间件包括IBM MQ-Series、Microsoft MSMQ及纯Java的SonicMQ。通过使用JMS API,开发人员无需掌握不同消息产品的使用方法,也可以使用统一的JMS API来操纵各种消息中间件。通过使用JMS,能够最大限度地提升消息应用的可移植性。 JMS既支持点对点的消息通信,也支持发布/订阅式的消息通信。
  3.6 JNDI
  由于J2EE应用程序组件一般分布在不同的机器上,所以需要一种机制以便于组件客户使用者查找和引用组件及资源。在J2EE体系中,使用JNDI(Java Naming and Directory Interface)定位各种对象,这些对象包括EJB、数据库驱动、JDBC数据源及消息连接等。JNDI API为应用程序提供了一个统一的接口来完成标准的目录操作,如通过对象属性来查找和定位该对象。由于JNDI是独立于目录协议的,应用还可以使用JNDI访问各种特定的目录服务,如LDAP、NDS和DNS等。
  3.7 JTA
  JTA(Java Transaction API)提供了J2EE中处理事务的标准接口,它支持事务的开始、回滚和提交。同时在一般的J2EE平台上,总提供一个JTS(Java Transaction Service)作为标准的事务处理服务,开发人员可以使用JTA来使用JTS。
  3.8 JCA
  JCA(J2EE Connector Architecture)是J2EE体系架构的一部分,为开发人员提供了一套连接各种企业信息系统(EIS,包括ERP、SCM、CRM等)的体系架构,对于EIS开发商而言,它们只需要开发一套基于JCA的EIS连接适配器,开发人员就能够在任何的J2EE应用服务器中连接并使用它。基于JCA的连接适配器的实现,需要涉及J2EE中的事务管理、安全管理及连接管理等服务组件。
  3.9 JMX
  JMX(Java Management Extensions)的前身是JMAPI。JMX致力于解决分布式系统管理的问题。JMX是一种应用编程接口、可扩展对象和方法的集合体,可以跨越各种异构操作系统平台、系统体系结构和网络传输协议,开发无缝集成的面向系统、网络和服务的管理应用。JMX是一个完整的网络管理应用程序开发环境,它同时提供了厂商需要收集的完整的特性清单、可生成资源清单表格、图形化的用户接口;访问SNMP的网络API;主机间远程过程调用;数据库访问方法等。
  3.10 JAAS
  JAAS(Java Authentication and Authorization Service)实现了一个Java版本的标准Pluggable Authentication Module(PAM)的框架。JAAS可用来进行用户身份的鉴定,从而能够可靠并安全地确定谁在执行Java代码。同时JAAS还能通过对用户进行授权,实现基于用户的访问控制。
  3.11 JACC
  JACC(Java Authorization Service Provider Contract for Containers)在J2EE应用服务器和特定的授权认证服务器之间定义了一个连接的协约,以便将各种授权认证服务器插入到J2EE产品中去。
  3.12 JAX-RPC
  通过使用JAX-RPC(Java API for XML-based RPC),已有的Java类或Java应用都能够被重新包装,并以Web Services的形式发布。JAX-RPC提供了将RPC参数(in/out)编码和解码的API,使开发人员可以方便地使用SOAP消息来完成RPC调用。同样,对于那些使用EJB(Enterprise JavaBeans)的商业应用而言,同样可以使用JAX-RPC来包装成Web服务,而这个Web Servoce的WSDL界面是与原先的EJB的方法是对应一致的。JAX-RPC为用户包装了Web服务的部署和实现,对Web服务的开发人员而言,SOAP/WSDL变得透明,这有利于加速Web服务的开发周期。
  3.13 JAXR
  JAXR(Java API for XML Registries)提供了与多种类型注册服务进行交互的API。JAXR运行客户端访问与JAXR规范相兼容的Web Servcices,这里的Web Services即为注册服务。一般来说,注册服务总是以Web Services的形式运行的。JAXR支持三种注册服务类型:JAXR Pluggable Provider、Registry-specific JAXR Provider、JAXR Bridge Provider(支持UDDI Registry和ebXML Registry/Repository等)。
  3.14 SAAJ
  SAAJ(SOAP with Attachemnts API for Java)是JAX-RPC的一个增强,为进行低层次的SOAP消息操纵提供了支持。
  4 基于Java技术的Web应用体系结构
  下面我们通过假设一个企业应用的J2EE实现,来了解各种组件和服务的应用。假设应用对象是计算机产品的生产商/零售商的销售系统,这个销售系统能够通过自己的网站发布产品信息,同时也能将产品目录传送给计算机产品交易市场。销售系统能够在线接受订单(来自自己的Web网站或者来自计算机产品交易市场),并随后转入内部企业管理系统进行相关的后续处理。
  企业应用可以这种方式架构。该企业应用的核心是产品目录管理和产品定购管理这两个业务逻辑,使用EJB加以实现,并部署在EJB容器中。由于产品目录和定购信息都需要持久化,因此使用JDBC连接数据库,并使用JTA来完成数据库存取事务。
  整个网站系统采用Browser/Web/DataBase的三层体系结构。Web服务器接受请求,通过应用程序服务器执行一个Java服务器端小程序Servlet并返回其输出,从而实现与客户机进行信息资源的交互。数据库服务器用来存储管理信息系统中所用到的各种数据,数据由数据库管理程序直接录入。系统的客户端只需要一个浏览器即可。相关人员通过浏览器来查询、增加、修改、删除数据,对信息进行管理。
  4.1 用JSP开发Web网站的应用实例
  JSP作为J2EE的一部分,既可以用于开发小型的Web站点、也可以用于开发大型的、企业级的应用程序,下面给出使用JSP进行开发的不同方式:1) 直接使用JSP(以页面为中心Page-Centric方式);2) JSP JavaBeans或者JSP Servlet的两层的开发结构(JSP Model 1);3) JSP JavaBeans Servlet的MVC的三层开发结构(JSP Model 2)
  4.2 三种不同的JSP开发J2EE WEB应用服务器的异同点:
  4.2.1 它们之间的基本相同之处
  它们都是用一组特性创建,以执行其特定任务的对象或组件;它们还有从当前所驻留服务器上的容器获得其它特性的能力;都是与平台无关的。
  4.2.3 它们之间的基本不同之处
  EJB 是部署在服务器上的可执行组件或商业对象,有一个协议允许对其进行远程访问或在特定服务器上安装或部署它们。有一系列机制允许它们将服务安全性、事务行为、并发性(由多个客户机同时访问的能力)和持久性(其状态可以保存多久)的主要方面授权给EJB 服务器上其所在的容器;EJB 是设计成运行在服务器上,并由客户机调用的非可视远程对象。可通过多个非可视JavaBean构建EJB。
  
  5 结束语
  Java 2 Enterprise Edition(JAVA2企业版),使用Java进行企业开发的一套扩展标准,必须基于J2SE,提供一个基于组件设计、 开发、集合、展开企业应用的途径。J2EE平台提供了多层、分布式的应用模型,重新利用组件的能力,统一安全的模式以及灵活的处理控制能力。J2EE包括EJB, JTA, JDBC, JCA, JMX, JNDI, JMS,
其他文献
摘要:针对SNMP(简单网络管理协议)的安全威胁,文中对SNMP协议在安全性方面存在的问题进行了论述,以某知名厂商为例,探讨了利用SNMP协议对其网络设备的攻击,并据此提出了一些防范的建议与措施。  关键词:SNMP;MIB;攻击  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)09-11611-03    The Security Analysis of SNMP
摘要:单片机应用技术学习涉及到的实验实践环节比较多,而且硬件投入比较大。随着计算机技术的进步,基于EDA技术的Proteus能很好解决这个问题。本文通过介绍51单片机最小化应用系统设计实例,详细说明了Proteus在单片机系统开发中的应用。  关键词:单片机;51单片机最小应用系统;Proteus仿真  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)18-21ppp-
摘要:本文指出了当前市面上家用电脑电源关于EMC方面不足的情况,并依据国家标准研制出一种新型的可以解决家用电脑电源EMI问题的无源滤波器。  关键词:电脑;电源干扰;无源滤波器  中图分类号:TN912 文献标识码:A文章编号:1009-3044(2008)06-1pppp-0c    1 电脑电源干扰分析    在我们的日常生活用电中,其实额定频率为50HZ的市电并不是“纯净”。由于电网中存在着
摘要:俄罗斯方块游戏很有趣味性,游戏吸引人的地方在于几个不规则的图形变化。那不规则图形能否完全覆盖全部空间呢,在理论上能得到结论吗?文中试着对L形方块入手,从理论上给出它能充满游戏空间的条件。  关键词:俄罗斯方块;L形方块;完全覆盖  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)12-20ppp-0c    The Condition of Russia-Bloc
摘要:基于ASP.NET 2.0和SQL SEVER 2000技术,采用Microsoft Visual Studio 2005编程环境开发了一套毕业设计管理信息系统。该系统运行安全可靠,功能较全,有效地提高了高校毕业设计管理工作的效率,为高校毕业设计实践教学管理提供了新的模式。   关键词:管理信息系统;ASP.NET 2.0;SQL Server 2000;数据库  中图分类号:TP311文献
摘要:本文对AutoCAD的二次开发技术进行了探讨,就AutoCAD六种开发技术AutoLISP,VisualLISP,ADS,VBA,Object ARX,Dot NET的内涵作了简要介绍,对其优缺点进行了详细的分析对比,指出ObjectARX和Dot NET是未来AutoCAD二次开发的方向,并为广大的AutoCAD二次开发人员选用其开发工具提供参考性意见。   关键词:AutoCAD;Aut
摘要:Jar文件是Java 的可执行文件,在安装有JRE的机器上可以直接执行。然而实际操作时常常会遇到显示“could not find the main class. program will exit”无法执行的故障,有时虽能执行但无图片显示,或音乐失声,或干脆无反应。本文将针对这些执行故障进行分析,并提出排除和解决的方法。  关键词:Java;Jar文件;故障排解  中图分类号:TP311文
摘要:介绍了一种基于东南大学ASIC工程中心自主研发的SEP3203微处理器的气象数据采集系统,该系统对大气中的温度、湿度和气压等物理量进行了测量和相关处理,并借助于中国移动的GPRS网络,将处理后的数据送到气象监测服务中心。系统具有结构简单、性能稳定和功耗低等优点。  关键词:气象监测;温湿度;气压;GPRS   中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)24-
摘要:文章对“汉诺塔”问题进行了详细的分析,给出了一种实现的算法,并用C语言实现。通过该问题的C实现,可使学习者清晰地观测到解决该问题的全过程。  关键词:汉诺塔;算法;递归  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)17-21496-02    1 问题描述    问题提出:有三个塔(分别为A号,B号和C号)。开始时,有n个圆形盘以从下到上、从大到小的次序叠置
摘要:Oracle数据库对Java提供了很好的支持,详细介绍了在Windows系统环境下如何配置Oracle自带的Java开发环境,以及如何通过Java实现对Oracle数据库进行简单的查询和插入操作的方法。  关键词:Oracle;Java;查询;插入  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)25-1373-02  The Simple Apply Of