基于j2ee的五层体系结构构建方法

文档序号:6342857阅读:248来源:国知局

专利名称::基于j2ee的五层体系结构构建方法
技术领域
:本发明涉及一种基于J2EE的五层体系结构构建方法,属于分布式计算机应用
技术领域

背景技术
:Sun的J2EE(Java2Platform,EnterpriseEdition,Java2平台企业版)是一个标准的多层体系结构,适用于开发和部署分布式的企业应用程序,具有以下特点1、J2EE技术规范是以容器为中心的。J2EE用容器为驻留在其中的构件提供了一种可管理的运行环境。同时容器还用容器API(ApplicationProgramInterfaces,应用程序编程接口)为运行在容器中的构件提供了系统级服务。2、J2EE是一组协调规范,利用标准化、模块化的构件简化企业应用程序。由于构件本身所具有的自治性和地址透明性,因此,基于构件的应用程序就具有可管理性、复用性和伸缩性好的优点。3、J2EE支持群集技术,即在J2EE中,容器和构件可以分散在多个服务器上,由于消除了单一点的故障。因此J2EE的应用程序具有高可用性和高可靠性。4、J2EE是基于Java语言的,因此具有Java“一次编写,随处运行”的优点。5、J2EE利用JAAS(JavaAuthenticationAuthorizationService,Java验证和授权API)提供了Java授权和身份验证服务,再加上Java语言本身的安全机制,为J2EE应用程序提供了安全性。J2EE的最新版本是J2EE1.4,它支持JSP2.0(JavaServerPage)、Servlet2.4、EJB2.1(EnterpriseJavaBean)和JDBC2.0(JavaDatabaseConnectivity)等API。在这里JSP支持自制标签;Servlet获得了过滤器;JSP和Servlet用于进行网络构件开发。EJB改变了容器管理的持久性,提供了具有本地接口的CMP(Container-ManagedPersistence,容器管理的持久性)实体Bean,EJB用于开发业务逻辑构件。JDBC(JavaDatabaseConnectivity,Java数据库连接)提供了与关系型数据库的连接,同时提供连接缓冲和分布式事务,它与RMI(RemoteMethodInvocation,远程方法调用)和JNDI(JavaNamingandDirectoryInterfaces,Java名字和目录接口)共同构成了分布式开发的J2EE技术。据申请人了解,现有的J2EE应用系统,通常有三层、四层或N层结构。其中三层是将应用程序分为客户层(使用HTML、Applet或JavaApplication以及其他客户程序)、中间层(使用JSP、Servlet或EJB)和资源层(包括数据库或企业原有信息系统)。它的特点是将JSP、Servlet和EJB中的实体Bean、会话Bean等单独或混合应用于中间层。四层是将三层中的中间层分为Web层(使用JSP或Servlet)和业务层(使用EJB)。它的特点是将JSP和Servlet等单独或混合应用于Web层;将EJB中的实体Bean和会话Bean等单独或混合应用于业务层。N层是将J2EE的各种技术交叉使用,使得应用程序包含了三层、四层或其他各种体系结构。据申请人了解,目前还没有严格分为五层的体系结构。以上现有的J2EE应用程序有的结构清晰但性能不高(如三层、四层);有的性能高但结构不清(如N层)。总体而言,所用到的J2EE技术比较复杂,要求编程者有较高的技术水平和编程技巧,系统难于实现,难以复用。
发明内容本发明要解决的技术问题是针对以上现有技术存在的问题,提出一种基于J2EE的五层体系结构构建方法,使基于J2EE的应用程序具有以下特点1,结构清晰、性能优越、易于实现;2,可以实现框架复用;3,能够实现异构数据库的互访;4,具有高安全性,能够跨越防火墙在因特网上使用。为了解决以上技术问题,本发明基于J2EE的五层体系结构构建方法包括以下步骤在计算机操作系统上1)、构建数据层——建立关系型数据库,用以存储业务数据,为相邻上层提供服务。2)、构建数据集成层——采用具有本地接口的容器管理持久性(ContainerManagedPersistence)实体Bean建立构筑在数据层之上的数据集成层,每一个所述实体Bean对应所述数据库的一个单元,用以借助实体Bean将用会话Bean处理过的数据传送给数据库,以及将数据库中的数据传送给会话Bean。3)、构建业务逻辑层——采用具有远程接口的会话Bean(有状态和无状态)建立构筑在数据集成层之上的业务逻辑层,将密切相关的容器管理持久性实体Bean和作为包装的会话Bean打包部署在同一个Java虚拟机中(JavaVirtualMachine)中,用以借助会话Bean将用Servlet处理过的数据传送给实体Bean,以及将用实体Bean处理过的数据传送给Servlet。4)、构建界面控制层——采用服务器小程序(Servlet)建立构筑在业务逻辑层之上的界面控制层,动态处理网络HTTP请求,生成HTTP响应,处理控制流和启动业务操作,用Servlet将用户在JSP页面中处理过的数据传送给会话Bean,以及将用会话Bean处理过的数据传送给JSP页面。5)、构建客户界面层——采用Java服务器页面(JavaServerPage)建立构筑在界面控制层之上的客户界面层,用JSP页面将用户的操作传送给Servlet,以及将用Servlet处理过的数据传送给用户。本发明提出并实现了一个符合J2EE规范的五层体系结构即,将在服务器中构建起如表1所示,自底向上分别为数据层、数据集成层、业务逻辑层、界面控制层和用户界面层的五层结构。该体系结构使应用程序结构清晰,性能优越且易于实现,同时可以在行业标准化的基础上实现构件复用。开发者用该体系结构只需掌握简单的JSP、Servlet、会话Bean和本地接口的CMP实体Bean的编程方法以及了解XML语言、JAAS、JNDI和JDBC就可以快速开发出性能优越的分布式计算机应用程序。客户界面层JSP界面控制层Servlet业务逻辑层会话Bean(有状态和无状态)数据集成层具有本地接口的CMP实体Bean数据层关系型数据库表1基于J2EE的五层体系结构具体而言,本发明将EJB中的实体Bean和会话Bean的使用分开,采用具有本地接口的CMP实体Bean作为数据集成层,这样可以将关系型数据库的数据转换成对象,并对远程客户隐藏其对象模型;同时由于通过会话Bean调用具有本地接口的实体Bean,使得对数据库的多次数据值调用变为一次对象调用,减少网络资源的消耗,提高系统性能。此外,还将JSP和Servlet的使用分开,用JSP处理复杂界面的表示;Servlet负责响应用户请求。结果,将构建起结构清晰的五层体系,每一层都代表特定的功能组合。底层通过提供接口支持且仅支持相邻的上层,上层通过调用接口获得且仅获得相邻底层的服务,层与层之间不能交叉调用。总而言之,本发明的五层体系结构具有如下特点1系统的数据层采用关系型数据库;将EJB中的实体Bean和会话Bean的使用分开2,系统的数据集成层采用具有本地接口的CMP实体Bean,由EJB容器自动实现安全、事务完整性、远程通信和伸缩性等服务。一个实体Bean对应数据库中的一个表,这样在行业标准化的基础上,也即当数据库结构规范化、标准化后,至少可以实现以实体Bean为单位的构件复用。系统利用实体Bean将用会话Bean处理过的数据传送给数据库;反过来,系统也利用实体Bean将数据库中的数据传送给会话Bean,即,对数据库的任何操作都必须通过且仅通过实体Bean进行。3,系统的业务逻辑层采用具有远程接口的两种会话Bean,分别是有状态会话Bean和无状态会话Bean。采用会话Bean作为业务逻辑层组件可以将直接访问实体Bean的多次远程调用变为用会话Bean进行的一次远程调用,即向客户提供高级抽象,对系统中参与的业务对象提供粗粒访问,这样有利于减轻网络压力,提高系统性能。系统利用会话Bean将用Servlet处理过的数据传送给实体Bean;反过来,系统也利用会话Bean将用实体Bean处理过的数据传送给Servlet,即,对实体Bean的任何调用都必须通过且仅通过会话Bean进行。4,系统的界面控制层采用Servlet,Servlet负责响应用户请求,根据用户的行为,决定将哪个JSP页面发送给用户。同时,Servlet与EJB一样是运行在服务器端的Class文件,用户难以修改源程序,可以提高系统的安全性。系统利用Servlet将用户在JSP页面中处理过的数据传送给会话Bean;反过来,系统也利用Servlet将用会话Bean处理过的数据传送给JSP页面,即,对会话Bean的任何调用都必须通过且仅通过Servlet进行。5,系统的用户界面全部采用JSP页面,JSP只负责处理界面表示。这样处理的优点在于可以将开发工作分工,由专门的美工人员设计静态页面。系统利用JSP页面将用户的操作传送给Servlet;反过来,系统也利用JSP页面将用Servlet处理过的数据传送给用户,即,对Servlet的任何调用都必须通过且仅通过JSP页面进行。同时用户对系统的任何操作都必须通过且仅通过JSP页面进行。简言之,用本发明五层体系结构开发的应用系统,用户对数据库的操作都必须通过且仅通过JSP页面→Servlet→会话Bean(有状态或无状态)→具有本地接口的CMP实体Bean→数据库的方式进行;反过来,数据从数据库提交给用户也必须通过且仅通过数据库→具有本地接口的CMP实体Bean→会话Bean(有状态或无状态)→Servlet→JSP页面的方式进行。采用基于J2EE的五层体系结构实现的应用系统,结构清晰,性能优越,易于实现,同时可以在行业标准化的基础上实现构件复用。该体系结构本身还可以作为一个框架在应用程序的开发中进行复用,使没有高超编程技巧的开发者也能够利用该体系结构快速开发出高效的分布式企业应用程序具体实施方式实施例一首先以构建面向水利领域的基于J2EE的五层体系结构的具体过程为例详细说明本发明的方法。1、构建数据层J2EE规范的最底层是企业信息系统层,包括企业资源规划、数据库系统等企业基础设施系统,以及JCA、JDBC等多种标准API。由于目前水利领域主要采用Sybase和Oracle数据库,因此面向水利领域的应用框架最底层采用关系型数据库。J2EE容器中的JDBC(JavaDatabaseConnectivity,Java数据库连接)为应用程序连接到关系型数据库提供了一个公共接口。JDBC对数据库的访问具有平台无关性,解决了异构数据库的处理问题,从而简化和加快了开发过程。随着JDBC的发展,它已经能提供如连接池、支持分布式事务等高级功能。在面向水利领域的应用框架中连接Sybase和Oracle数据库的JDBC分别采用表4.1和表4.2所示的驱动程序Drivercom.sybase.jdbc2.jdbc.SybDriverClassnameURLjdbcSybaseTds机器域名端口号/数据库名Librarypaths数据库安装目录/jConnect-5_2/classes/jconn2.jar表4.1连接Sybase数据库的JDBC驱动程序Driveroracle.jdbc.driver.OracleDriverClassnameURLjdbcoraclethin@机器域名端口号数据库SIDLibrarypaths数据库安装目录/ora90/jdbc/lib/classes111.zip表4.2连接Oracle数据库的JDBC驱动程序例,在数据库中创建一个表T_STN。CREATETABLE″T_STN″(″STNNO″VARCHAR2(10),″CTRNO″VARCHAR2(10),″STNNM″VARCHAR2(50),″FZR″VARCHAR2(20),″LXDH″VARCHAR2(50),″DZ″VARCHAR2(100),″YZBM″VARCHAR2(10))2、构建数据集成层数据集成层由与数据库表一一对应的本地接口CMP实体Bean组成。在J2EE规范中,对数据的访问有多种方式由客户层通过JDBC直接访问;从Web层利用JavaBean访问;也可以经过业务层访问。作为多层结构核心的中间层,由于其担负“承上启下”的枢纽作用,在实际的应用系统中扮演着至关重要的角色。中间层应用在对事务完整性的保证、对大规模并发处理的响应、对异构系统互联的透明支持,以及对应用数据的安全性保护等方面的表现将成为应用系统成败的决定性因素。因此,在多层结构的应用开发中,中间层的实现是整个应用程序的关键。由于J2EE规范的业务层由EJB构件实现,而EJB能够自动提供对象持久性、安全性和事务管理等系统级服务,从而极大地简化开发过程。因此面向水利领域的应用框架采用通过J2EE规范的业务层EJB构件访问数据库。实体Bean是用于表示和维护数据实体的构件,是数据库内数据在EJB容器里的翻版。如果一个客户终止使用服务或J2EE应用服务器被关闭,EJB容器会将实体Bean的数据保存到数据库内,这就是所谓数据持久性。会话Bean主要用来描述程序的业务逻辑,一个会话Bean代表应用程序和客户的一次会话过程。在程序运行过程中,当客户执行完操作后,会话Bean和它所使用的数据会被删除。由于水利领域数据种类繁多,既包括大量空间数据也涉及大量历史数据,因此如果要求编程者自己编写数据库操作指令会比较困难,所以在应用框架中对数据库的访问全部采用CMP实体Bean,由容器负责对数据库的操作。同时EJB2.x的查询语言(QL)使得CMP实体Bean的查找和选择操作变得更为灵活和简便。会话外观(又称为会话门面)设计模式是将实体Bean层包装在一个称为会话外观(会话门面)的会话Bean层中,客户端只能访问会话Bean而不是实体Bean。采用会话外观设计模式的优点防止客户与业务对象之间紧耦合;防止客户与服务器之间的许多远程方法调用造成网络性能问题;可以减少网络上服务层的业务对象数等。由于水利领域信息来源分布地域广,数据传输处理实时性和安全性要求高,所以应用框架在EJB层采用了能够减轻网络压力和提高安全性的会话外观模式,将EJB中的实体Bean和会话Bean使用彻底分开。在应用框架中对数据库的访问全部采用且仅采用CMP实体Bean,将CMP实体Bean单独作为一层——数据集成层,这样做的另一个优点是可以将关系型数据库的数据转换成对象,提供比原有数据更多的功能。EJB2.x的会话Bean和实体Bean都拥有远程和本地两种类别的主接口。远程接口和本地接口的主要区别是远程接口的调用者和被调用对象可以分布在网络中,而本地接口的调用者和被调用对象必须驻留在同一JVM中。如果采用远程接口,调用者和被调用对象即使在同一个JVM中,依然是远程调用,远程调用方法的参数和结果实现数值传递。分布式系统中的每个远程调用都需要巨大的开销增加网络流量、需要进行安全检查、需要进行事务扩展等等,所以运行非常缓慢。测验表明,一个JVM中的远程方法调用比本地方法调用慢2000倍。而且这些测量是在快速空网络上进行的,普通网络通信流则会进一步减慢远程方法调用。本地调用方法的参数和结果实现引用传递,数据转换可以在服务器本地进行,不必消耗网络等资源,并可以对远程客户隐藏对象模型。考虑到水利信息领域应用系统对性能和安全的特殊要求,应用框架中数据集成层的CMP实体Bean全部采用本地接口从而避免了远程接口所带来的低效率,最大限度地减少实体构件的性能开销。由于水利领域的大型数据库已经或将要实现规范化,一大批以实时水情库、工情信息数据库、社会经济信息库、图形库等为代表的综合数据库的表结构早已确定,已经或正在进入到数据录入阶段。因此编程人员难以在数据库层随意根据用户需求建立数据之间的关系实现视图功能。具有本地接口的CMP2.x实体Bean可以用抽象方法表示关系,使得视图可以建在数据集成层。但相互关联的CMP实体Bean在调用其中一个时,将会把与其有关联的所有CMP实体Bean都激活,这样会影响系统性能。而且,为了能够达到软件复用的目的,也不能在实体Bean层建立关联。为此,数据之间的关系就只能放在会话Bean层实现。考虑到构件复用的需要在CMP实体Bean的本地接口中尽可能多的定义一些查询方法,如至少对应数据库表的每个字段建立一个查询方法。综合以上分析,面向水利信息化的中间件系统集成应用框架的数据集成层采用具有本地接口的CMP实体Bean,而且一个实体Bean对应数据库中的一个表,这样在水利领域规范化的基础上数据集成层和数据层一样可以确定不变。例,数据库中有一个表T_STN。在数据集成层创建CMP实体BeanTStn;用如下语句为上层用于数据增删改的会话Bean提供服务publicTStncreate(Stringstnno,Stringctrno,Stringstnnm,Stringfzr,String1xdh,Stringdz,Stringyzbm)throwsCreateException;//create方法的参数与数据库表T_STN的字段一一对应;用如下语句为上层用于数据查询的会话Bean提供服务publicCollectionfindByAll()throwsFinderException;用如下EJB查询语句对底层数据库表T_STN进行查询调用SELECTOBJECT(ts)FROMTStnASts;3、构建业务逻辑层应用框架的业务逻辑层采用具有远程接口的会话Bean。由于本应用框架在EJB层采用了会话外观设计模式,已经将EJB层分为实体Bean和会话Bean两层,用具有本地接口的CMP实体Bean负责数据集成。因此系统的业务逻辑就全部由会话Bean负责。由于水利领域应用系统复杂,要处理气象、水资源、水利经济等多种数据,使得单个服务器可能无法满足需求;同时由于水利信息采集地点覆盖全国七大江河流域,因此有可能要在不同地理位置部署服务器,为此需要考虑多台服务器同时提供服务。因此面向水利领域的应用框架有必要在分布性和系统性能方面作权衡,通过集群的方式来处理庞大的应用,这样不仅能够消除集中式处理存在单点故障的弱点,同时也可以降低成本。考虑到分布的需要,会话Bean采用远程接口,将关系密切的CMP实体Bean和作为包装的会话Bean打包部署在同一个JVM中。由于通过会话Bean调用具有本地接口的实体Bean,使得对数据库的多次数据值调用变为一次对象调用,即向客户提供高级抽象,对系统中参与的业务对象提供粗粒访问,减少网络资源的消耗,提高系统性能;而会话Bean采用远程接口,使得EJB层可以和其它层运行在不同机器上,提高系统分布性。由于水利领域数据库结构的规范化,使得无法在数据层根据用户特殊需求建立视图;考虑到构件复用和系统性能的需求不能在数据集成层采用抽象方法建立关联的方式建立视图。因此,只能在业务逻辑层建立视图。具体方法1,如果视图包括数据库中几个表的字段,则采取在会话Bean的一个方法中调用多个CMP实体Bean的方式建立视图。2,如果视图包括数据库中一个表的某些字段,则将会话Bean方法的参数设置为与所需字段一一对应。会话Bean主要是为客户进行与业务逻辑相关的数据操作,根据是否支持应用程序会话中客户的会话状态分为有状态和无状态两种。在这里,所谓状态就是操作中使用的数值。有状态会话Bean能够记载该Bean和一个特定用户的交互过程,由于对数据的增删改操作需要在方法调用之间保存信息,因此所有增删改操作采用有状态会话Bean。无状态会话Bean相当简单,只是一次对一个客户提供业务逻辑而不在方法调用之间保存客户状态。无状态会话Bean所需系统开销少,伸缩性好,因此用于查询和计算等操作的会话Bean采用无状态的,以便建立更有效的应用程序。综上所述,面向水利信息化的中间件系统集成应用框架的业务逻辑层采用具有远程接口的会话Bean,增删改操作采用有状态会话Bean,其它操作采用无状态会话Bean。例,数据集成层有一个CMP实体BeanTStn;在业务逻辑层创建用于增删改操作的有状态会话Beanzsg用如下语句调用下层CMP实体BeanTStn提供的服务InitialContextinitCtx=newInitialContext();TStnHomehome=(TStnHome)initCtx.lookup(″TStn″);TStnreturnTStn=home.create(stnno,ctrno,stnnm,fzr,lxdh,dz,yzbm);用如下语句为上层提供服务publicvoidaddTStn(java.lang.Stringstnno,java.lang.Stringctrno,java.lang.Stringstnnm,java.lang.Stringfzr,java.lang.Stringlxdh,java.lang.Stringdz,java.lang.Stringyzbm)throwsRemoteException;在业务逻辑层创建用于查询的无状态会话Beancx用如下语句调用下层CMP实体BeanTStn提供的服务InitialContextctx=newInitialContext();TStnHomehome=(TStnHome)ctx.lookup(″TStn″);Collectionresult=home.findByAll();用如下语句为上层提供服务publicCollectiongetAll_TStn()throwsRemoteException;4、构建界面控制层应用框架的界面控制层采用Servlet。由于基于Web的J2EE应用程序具有减轻客户机的负担,降低对客户机的软、硬件配置要求以及减少给客户机安装软件的麻烦等优点,因此应用框架选用通过Web层调用EJB层的服务。Servlet(服务器小程序)和JSP(JavaServerPages,Java服务器动态网页技术)是J2EEWeb层的主要技术。Web层主要用来处理HTTP(HypertextTransferProtocol,超文本传输协议)请求,根据Web服务器内的Servlet和JSP动态生成HTTP的响应。由于设计不良的Web接口将导致应用的无法维护和整个系统的失败,因此有必要讨论Web层的设计,以保证Web接口既简单又可维护。造成水利领域Web层开发困难的原因有1,Web接口经常变化由于水利系统应用程序的用户广泛,不同的用户对Web应用的视觉效果要求不同,但Web接口的变化不一定改变工作流程。成功的水利领域应用应该能够容纳这种变化,同时又无需修改业务对象甚至Web层控制代码。2,Web接口牵涉到复杂的页面表示典型的水利领域的用户界面可能包含气象云图、电子地图、雨量等值线图等复杂的页面表示,通常只有内容的一小部分是动态的。因此有必要区分开页面开发人员和Java开发人员的任务,使页面开发人员专门负责静态页面的设计,而由Java开发人员负责动态内容的控制。3,存在许多效率考虑因素通常,我们无法限制或预知使用一个水利领域Web应用的用户数量。为此,系统的性能和一致性在水利领域Web应用中可能都是非常重要的。在J2EE规范中对Servlet和JSP两种Web技术也有多种使用方式。MVC(Model-View-Controller,模型-视图-控制器)模式将数据(模型)与信息的表示(视图)分开,在此两者之间是控制器用于控制信息流。根据这三者之间彼此的交互为基础设计应用程序。MVC模式使得每种构件类型都有一个明确的责任模型不含有视图特定的代码;视图不含有控制代码或数据访问代码,只集中精力显示数据;控制器创建并更新模型,它们不依赖于特定的视图实现。由于应用框架已经将业务逻辑全部交由会话Bean处理,因此,Web层不必再考虑数据模型的问题。由于水利领域Web应用的复杂性因此应用框架采用MVC模式将Web层完全分离为功能不同的两层控制器(界面控制层),视图(客户界面层)。例,在业务逻辑层有一个会话Beanzsg在界面控制层创建用于数据录入的Servletservlet_tstn_lr;用如下语句调用下层会话Beanzsg提供的服务InitialContextctx=newInitialContext();ObjectobjRef=ctx.lookup(″zsg″);zsgHomehome(zsgHome)javax.rmi.PortableRemoteObject.narrow(objRef,zsgHome.class);zsgcust=home.create();cust.addTStn(stnno,ctrno,stnnm,fzr,lxdh,dz,yzbm);用如下语句控制客户界面层RequestDispatcherrdgetServletContext().getRequestDispatcher(goTo);goTo=″客户界面URL″;在业务逻辑层有一个会话Beancx在界面控制层创建用于数据查询的Servletservlet_tstn_cx;用如下语句调用下层会话Beancx提供的服务InitialContextctx=newInitialContext();ObjectobjRef=ctx.lookup(″cx″);cxHomehome=(cxHome)javax.rmi.PortableRemoteObject.narrow(objRef,cxHome.class);cxcust=home.getAll_TStn();5、构建客户界面层应用框架的客户界面层采用JSP页面。由于应用框架采用MVC模式已经将Web层分为控制器和视图两层,用不带显示页面功能的Servlet作控制器负责Web界面控制。因此系统的客户界面层就全部由视图负责,这样,无论使用何种视图技术,都不必修改控制器中的代码。控制器与视图完全分离的优点1,它是保证分离Java开发人员和页面开发人员角色的最佳方法;2,它保证能够在不影响应用程序控制流程的情况下修改Web界面的表示;3,它允许视图合成。在视图合成中,多个视图的输出结果或页面内容被组合起来,同时又不影响Java代码。在J2EE规范中Servlet和JSP都可以静态和动态地生成网页。Servlet虽然提供了全面的动态生成网页内容的功能,但这种技术有几个不足之处由于Servlet是纯Java代码,因此开发人员必须有足够的Java编程能力;在Servlet中用很多繁杂的println命令生成HTML代码比较麻烦,当仅仅需要改变Web界面的表示时就必须重新编译和部署Servlet程序;在Servlet程序的调试过程中,很难所见即所得看到页面效果。与Servlet相比,JSP提供了一种比较自然的生成网页方法。它是在Servlet技术基础之上发展起来的,采用基于网页格式的文本语言,使得对Java技术不精通的开发人员也可以用JSP标签编写动态网页。由于和HTML很接近,JSP技术更适合编写Web程序的界面。而且JSP页面不受客户浏览器类型的限制,还可以跨越防火墙,因此面向水利领域的应用框架最上层采用JSP页面。例,在界面控制层有一个Servletservlet_tstn_cx;在客户界面层创建一个用于数据查询的JSP页面tstn_cx.jsp;用如下语句和Servletservlet_tstn_cx进行连接生成动态网页<formmethod=″post″action=″/servlet_tstn_cx″>理论和实践都证明,采用以上步骤构建的适于水利系统的基于J2EE的五层体系结构,结构清晰,性能优越,易于实现,易于复用,具有高安全性,减少网络资源耗费,在此基础上的进一步开发十分方便。实施例二本实施例介绍用于某大学图书馆学位论文管理系统的基于J2EE的五层体系结构构建步骤,具体情况如下1系统功能由于学位论文在高校图书馆自产文献中占有重要地位,而学位论文的计算机管理目前还没有比较有效的方法。将J2EE的多层体系结构应用到图书信息化领域,实现学位论文的网上提交,查询和自动分类。2系统开发运行环境系统硬件环境数据库服务器安装Oracle9i数据库;应用服务器安装BEAWebLogicServer6.1;系统开发微机安装Borland公司的Jbuilder7.0作为系统的开发平台。以上均采用PentiumIII微机。系统软件环境操作系统Windows2000Server;数据库管理系统美国Oracle9i数据库管理系统;系统开发工具Jbuilder7.0;系统部署工具WebLogic6.1。3系统体系结构实现了一个符合J2EE规范的五层体系结构即,将应用程序自底向上分为五层数据层、数据集成层、业务逻辑层、界面控制层和用户界面层。各层具体叙述如下3.1数据层本系统的数据层采用Oracle9i,具体的库结构如表3所示。表名备注jb学位论文提交简表(论文封面内容)fb学位论文副表(论文内封面内容)zy摘要表(论文中,英文摘要)gjc关键词表(论文中,英文关键词)ckwx参考文献(学位论文参考文献表)flh分类表(根据专业由系统自动给出论文的中图法和UDC分类号)dz读者表(记录学位论文被借阅信息)tmb学位论文馆藏提名表slfb水利法分类表(根据关键词由系统自动给出论文的水利法分类号)KL口令表表3学位论文管理系统数据库结构用XML文件描述的JNDI和JDBC与数据库的连接<?xmlversion=″1.0″encoding=″UTF-8″?>............<jndi-definitions><jndi-name>serial//datasources/syq_xwlw</jndi-name>............<datasource-class-name>com.inprise.visitransact.jdbclw2.InpriseConnectionPoolDataSource</datasource-class-name>............<property><prop-name>url</prop-name><prop-type>String</prop-type><prop-value>jdbcodbcsyq_xwlw</prop-value></property>//odbc数据源<property><prop-name>driverClassName</prop-name><prop-type>String</prop-type><prop-value>sun.jdbc.odbc.JdbcOdbcDriver</prop-value></property>//JDBC-ODBC桥</driver-datasource></jndi-definitions>3.2数据集成层本系统的数据集成层采用具有本地接口的CMP2.0实体Bean实现。为了能够实现构件复用,对应学位论文数据库中的每一个表建一个CMP2.0实体Bean。例,实体BeanJb用XML文件描述如下(其他实体Bean与其类似)<display-name>Jb</display-name>//实体BeanJb部署时的JNDI;<ejb-name>Jb</ejb-name>//与学位论文提交简表jb相关的实体BeanJb的名字;<local-home>syq_xwlw.JbHome</local-home>//实体BeanJb的本地主接口;<local>syq_xwlw.Jb</local>//实体BeanJb的本地构件接口;<ejb-class>syq_xwlw.JbBean</ejb-class>//实体BeanJb的实现类;<persistence-type>Container</persistence-type>//实体BeanJb的持久性由容器管理;<cmp-version>2.0</cmp-version>//实体BeanJb遵循EJB2.0规范;在Jb的本地接口JbHome中有如下语句,为上层会话Bean提供服务publicJbfindByPrimaryKey(Stringxh)throwsFinderException;用如下语句,对底层数据库表jb进行查询调用;SELECTOBJECT(j)FROMJbASjWHEREj.xh=?1;3.3业务逻辑层学位论文管理系统所用的EJB构件采用会话门面设计模式。用会话Bean向客户提供高级抽象,对系统中参与的业务对象提供粗粒访问;用实体Bean抽象数据源,并提供数据的透明访问。因此本系统用会话Bean连接界面控制层的Servlet和数据集成层的实体Bean。会话Bean用如下语句与下层实体Bean进行连接//与学位论文提交简表相关的实体BeanJbHome联系sessionContext=newInitialContext();JbHomehome=(JbHome)sessionContext.lookup(″Jb″);returnJb=home.findByPrimaryKey(xh);//Jb的关键词是xh本系统采用的四个会话Bean(dl、cx、tj、fl)全部采用远程接口,使得部署和发布EJB的应用服务器可以和部署和发布JSP及Servlet的Web服务器驻留在不同的物理服务器上。3.4界面控制层本系统用Servlet作为JSP和会话Bean之间的连接。在Servlet中用如下语句和上层JSP进行连接publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsIOException,ServletException{RequestDispatcherrd=getServletContext().getRequestDispatcher(″/dl.jsp″);rd.forward(req,res);}用如下语句和与下层用户验证的会话Beandl相联系InitialContextctx=newInitialContext();ObjectobjRef=ctx.lookup(″dl″);dlHomedHome=(dlHome)javax.rmi.PortableRemoteObject.narrow(objRef,dlHome.class);dld=dHome.create();3.5客户界面层系统的用户界面全部采用JSP页面,JSP只负责处理界面表示。这样处理的优点在于可以将开发工作分工,由专门的美工人员设计静态页面。在JSP中使用如下语句和下层Servlet进行连接<formmethod=″post″action=″/servlet_dl″>实时工情数据库查询系统和某大学图书馆学位论文管理系统用户登录的功能已经被复用,即已经实现从JSP页面dl.jsp;dl-err.jsp→Servletservlet_dl→无状态会话Beandl→具有本地接口的CMP实体BeanK1→数据库中的表KL的整体功能模块为单位的构件复用。除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。权利要求1.一种基于J2EE的五层体系结构构建方法,包括以下步骤在计算机操作系统上1)、构建数据层——建立关系型数据库,用以存储业务数据,为相邻上层提供服务;2)、构建数据集成层——采用具有本地接口的容器管理持久性实体Bean建立构筑在数据层之上的数据集成层,每一个所述实体Bean对应所述数据库的一个单元,用以借助实体Bean将用会话Bean处理过的数据传送给数据库,以及将数据库中的数据传送给会话Bean。3)、构建业务逻辑层——采用具有远程接口的会话Bean建立构筑在数据集成层之上的业务逻辑层,将密切相关的容器管理持久性实体Bean和作为包装的会话Bean打包部署在同一个Java虚拟机中,用以借助会话Bean将用Servlet处理过的数据传送给实体Bean,以及将用实体Bean处理过的数据传送给Servlet;4)、构建界面控制层——采用Servlet建立构筑在业务逻辑层之上的界面控制层,用以动态处理网络HTTP请求,生成HTTP响应,处理控制流和启动业务操作,借助Servlet将用户在Java服务器页面中处理过的数据传送给会话Bean,以及将用会话Bean处理过的数据传送给Java服务器页面;5)、构建客户界面层——采用Java服务器页面建立构筑在界面控制层之上的客户界面层,用以借助Java服务器页面将用户的操作传送给Servlet,以及将用Servlet处理过的数据传送给用户。2.根据权利要求1所述基于J2EE的五层体系结构构建方法,其特征在于采用MVC模式将Web层完全分离为功能不同的界面控制层和客户界面层。3.根据权利要求1所述基于J2EE的五层体系结构构建方法,其特征在于所述数据集成层由EJB容器自动实现安全、事务完整性、远程通信和伸缩性服务。4.根据权利要求1所述基于J2EE的五层体系结构构建方法,其特征在于所述数据集成层通过具有本地接口的实体Bean访问数据层。5.根据权利要求1所述基于J2EE的五层体系结构构建方法,其特征在于所述业务逻辑层的增删改操作采用有状态会话Bean;用于查询和计算操作采用无状态的会话Bean。6.根据权利要求5所述基于J2EE的五层体系结构构建方法,其特征在于所述业务逻辑层按以下步骤建立视图,如果视图包括数据库中二个以上表的字段,则采取在会话Bean的一个方法中调用二个个以上CMP实体Bean的方式建立视图;如果视图包括数据库中一个表的字段,则将会话Bean的参数设置为与所需字段一一对应。7.根据权利要求5所述基于J2EE的五层体系结构构建方法,其特征在于所述业务逻辑层用会话Bean提供高级抽象,对系统中参与的业务对象提供粗粒访问;用实体Bean抽象数据源,并提供数据的透明访问。8.根据权利要求7所述基于J2EE的五层体系结构构建方法,其特征在于所述会话Bean全部采用远程接口,部署和发布EJB的应用服务器可以和部署和发布JSP及Servlet的Web服务器驻留在不同的物理服务器上。全文摘要本发明涉及一种基于J2EE的五层体系结构构建方法,属于分布式计算机应用
技术领域
。本发明提出并实现了一个符合J2EE规范的五层体系结构即将在服务器中构建自底向上分别为数据层、数据集成层、业务逻辑层、界面控制层和用户界面层的五层结构。该体系结构使应用程序结构清晰,性能优越且易于实现,具有高安全性,减少网络资源耗费,同时可以在行业标准化的基础上实现构件复用,使没有高超编程技巧的开发者也能够利用该体系结构快速开发出高效、安全、可靠、可伸缩和易于管理的分布式企业应用程序。文档编号G06F9/46GK1560741SQ200410014139公开日2005年1月5日申请日期2004年2月23日优先权日2004年2月23日发明者史宇清申请人:史宇清
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1