管理软件开发技术课件_第1页
管理软件开发技术课件_第2页
管理软件开发技术课件_第3页
管理软件开发技术课件_第4页
管理软件开发技术课件_第5页
已阅读5页,还剩284页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/1/20244:13AMCORBA模型与RMI

三种分布式计算模型:(1)CORBA

(2)COM/DCOM

(3)JAVARMI1/1/20244:13AMCORBA模型与RMI

CORBA是基于面向对象技术的,它能解决远程对象之间的互操作问题。

COM/DCOM是基于WINDOWS系统的。

JAVARMI能实现与平台无关,但它只能用JAVA实现。

CORBA通过IDL(InterfaceDefinitionLanguage)的接口定义语言,能做到与语言无关。任何语言都能制作CORBA组件,而CORBA组件能在任何语言中使用。

CORBA是J2EE技术EJB的基础,EJB的很多技术来自CORBA。

EJB和J2EE带来了一种以JAVA为中心的基于构件技术的方法进行传统中间件的编程。1/1/20244:13AMCORBA参考模型

CORBA参考模型由以下几个元素构成:(1)对象请求代理(ObjectRequestBroker)ORG在分布式环境下使得对象之间能够透明地发送请求和接收响应。它是在分布式对象上建立其它应用的基础,也是异构或同构环境下实现互操作的基础。(2)对象服务(ObjectServices)

支持如何使用对象和如何实现对象的是一系列服务(对象和接口)。对建立特定的分布式应用,对象服务是必需的,而且对象独立于特定的应用域。(3)公共设施(CommonFacilities)

公共设施是能被多个应用所共享的一系列服务。如系统管理和电子邮件是公共设施。对象服务强调的是基本性。

1/1/20244:13AMCORBA参考模型

(4)应用对象应用对象相当于传统应用程序的概念。它是构成参考模型最上层的元素。对象请求代理是整个CORBA参考模型的核心,它类似于电话交换机,提供产生呼叫和接收呼叫的基本处理机制,通过与对象服务的结合,可以确保符合CORBA规范的应用之间进行有意义的通讯。1/1/20244:13AM使用CORBA的优点在J2EE中使用CORBA的优点:

(1)使用CORBA与以前开发的系统实现无缝连接(2)CORBA支持用户进行高级中间件开发技术

EJB并不能解决任何问题,但如果存在一个可抽象出来的中间件服务,很可能它将成为CORBA标准中的一种服务。(3)CORBA与EJB有条件连接在一起。

EJB允许用户的EnterpriseBeans被两种不同类型的客户端程序访问:用J2EEAPIs编写的客户端和使用CORBAAPI的客户端。其它语言编写的程序可通过CORBA访问用户的EnterpriseBeans。

1/1/20244:13AMCORBA的优点

(1)CORBA简化了分布式应用的集成(2)CORBA作为一种抽象的规范定义而不限制具体的实现方案。(3)CORBA结构更利于资源的灵活、合理利用(相对于C/S)。CORBA是对等的分布计算环境,秘有应用对象之间的地位是平等的,其担任的角色是可互相转换的。(4)CORBA是面向对象的。(5)CORBAIDL是一种与编程语言无关的接口定义语言,用来定义对象的请求/服务接口,描述应用对象所封装的内容和界限。(6)CORBA作为一种标准,其核心元素的稳定性有保证的。(7)具有开放性和平台独立性。1/1/20244:13AM使用CORBA的缺点

(1)CORBA标准的发展比较缓慢。(2)CORBA的内容非常多,使得很难全部掌握所有东西。

CORBA分成很多服务,在需要时只需学习相应服务即可。(3)基于CORBA的产品可能包含不兼容的特性。1/1/20244:13AMCORBA的工作原理

(1)ORG

当客户程序要调用远程对象上的方法时,首先要得到这个远程对象的引用,之后就可像调用本地方法一样调用远程对象的方法。当发出一个调用时,ORG会截取个调用,因为客户和服务器可能在不同一网络、不同的操作系统甚至不同的语言实现,ORG还要负责将调用的名字、参数等编码成标准方式(Marshaling)通过网络传输到服务器方,并通过将参数Unmarshling的过程传输到正确的对象上(整个过程称为重定向),服务器对象完成处理后,ORG通过同样方式将结果返回给客户。1/1/20244:13AMCORBA的工作原理

ORG具有以下能力:(1)对象定位(根据对象引用定位对象的实现)(2)对象定位后,确信SERVER能接受请求(3)通过客户请求重定位到服务器对象上(4)如果需要,将结果按同样方式返回。1/1/20244:13AMCORBA的工作原理OMGIDL

是定义接口,而不定义实现。

IDL到具体语言的映射须了解IDL到具体语言映射的细节规范。CORBA静态请求。通过一个本地方法调用,将此调用翻译成远程方法的调用。1/1/20244:13AMCORBA的工作原理

(2)CORBA服务了解必要的CORBA服务1/1/20244:13AMRMI-IIOP

RMI-IIOP标准是EJB和CORBA兼容标准的关键。

RMI与CORBA是非常相似的技术,但有所不同。

CORBA是一个相对完善的分布式对象标准,它允许语言之间的互补,而RMI比较适合于纯JAVA的应用环境。它们是两种不兼容的技术。RMI-IIOP规范允许将RMI与CORBA相结合。1/1/20244:13AM结合RMI与CORBA的应用步骤

RMI-IIOP客户端与CORBA对象实现(1)利用JAVA编写RMI-IIOP远程接口(2)生成必要的客户端RMI-IIOPStubs来调用CORBA对象(3)生成OMGIDL(4)生成服务器端必需的CORBA文件。(5)编写客户端应用程序和服务器端应用程序。客户端与数据库服务器客户端开发工具可以完成的工作数据库可以完成的工作C/S模式下开发应用系统应考虑的问题数据库设计

1/1/20244:13AM客户端开发工具可以完成的工作

(1)设计窗口和定义窗口的控件(2)生成菜单(3)生成数据窗口(4)在程序中直接书写SQL语句操作数据库(5)可以极方便地生成和维护数据库(6)在图形方式下生成数据查询。用户即使不会使用SQL语句也可以在此环境下生成复杂的查询,并将其作为一类对象保存。(7)实现数据库之间数据的转换1/1/20244:13AM数据库可以完成的工作数据库是应用系统的核心,从客户端开发工具来看,它的作用主要有:(1)接收SQL指令,执行SQL指令,并将指令的执行结果返回给客户端。(2)查询优化。从客户端发为的SQL指令,数据库要先对其进行语法和句法分析,然后进行查询优化。查询优化分为两类:一类是基于语法的优化,这类优化是根据SQL语句的写法,相同的查询不同的写法会导致完全不同的查询效率。另一类是基于成本的优化,这类优化与SQL语句的写法无关,仅与要完成的工作有关。基于成本的优化技术极大地降低了对开发人员的要求,可以使开发人员更专心地解决应用中的问题。1/1/20244:13AM数据库可以完成的工作(3)事务处理数据库的特点是数据的集中管理和共享,在通常情况下总是有若干个事务并发地运行,这些并行的事务可能并发地存取相同的数据。因此,数据库的一个重要任务是要有一种机制去保证这种并发的存取和修改不破坏数据的完整性,确保这些事务能正确在运行并取得正确的结果。(4)并发处理事务并发执行是若不加控制的话将导致不正确的结果和数据库状态的不一致。为保证数据库正确地反映所有事务的更新,以及在一事务修改数据库中的数据时,其它事务不能同时修改这些数据,数据库必须用锁来控制对数据的并发存取。1/1/20244:13AM数据库可以完成的工作(5)存取权限管理用户对数据库对象的操作权限是通过使用授权的方法来管理的。(6)数据库规则规则是加在数据库表列上的约束条件,是在数据库上设定的。主要有限制列的取值范围、唯一性、是否非空等。如果用户给此列的输入值不满足约束条件时,则数据库会给出错误信息,数据库只接收满足约束条件的数据。(7)主键和外键主键和相应的外键是维持表间特定关系的一种方法,是实体间一对多关系的体现。相关完整性是指主键和相应外键必须完全匹配的性质。1/1/20244:13AM数据库可以完成的工作(8)存储过程存储过程是编译好了存储在数据库中的SQL语句和控制流语句的集合。它可极大地增强SQL语句的功能、效率和灵活性,改善SQL语句的性能。(9)触发器触发器是一种特殊类型的存储过程,它在插入、删除或修改特定表中的数据时起作用。触发器可以维持表间数据的一致性,保证数据的相关完整性。触发器的优点是不管什么原因造成数据库数据变化时都能自动响应。1/1/20244:13AM数据库可以完成的工作(10)视图视图是一个或多个表中数据的一种表现形式,可将视图看作为一个移动的窗口,通过它可看到感兴趣的数据。视图看起来非常象表,对它的查询或操作与表相同。使用视图有以下优点:①看到的是所需要的。视图允许用户集中在他们感兴趣的数据或他们负责的数据上进行工作。那些对特定用户或对特定工作无关的数据可被排除在视图之外。②简化数据操作。视图不仅可简化用户对数据的理解,而且可以简化他们的操作。那些被经常使用的查询可以定义为视图,从而使用户不必为以后的操作每次指定全部查询条件。1/1/20244:13AM数据库可以完成的工作③视图允许用户以不同的方式查询同样的数据。④安全性。通过视图用户只能查询或修改他们所能见到的数据。通过使用视图和有选择的授权,用户可被限制在使用数据的不同子集上。⑤逻辑数据独立性。视图可帮助用户屏蔽真实表结构带来的影响,使应用程序和数据库结构相互独立,互不影响。(11)序号生成器数据库可以自动生成连续的序号,这样做的目的是避免多个用户同时申请下一个序号造成的瓶颈。1/1/20244:13AMC/S模式下开发应用系统应考虑的问题主要考虑两个问题:(1)客户端开发工具主要是应用前台的问题,数据库主要是应用后台的问题。然而由于数据库和客户端开发工具的功能都在不断增强,客户端开发工具在向数据库方向上延伸,数据库的功能在向客户端开发工具方向延伸,一些功能是相互交叉,所以有些问题用客户端开发工具或数据库都能解决。对于应用中的某些特定问题,使用客户端开发工具还是数据库来解决,用数据库解决问题的好处是什么,用客户端开发工具的好处又是什么?(2)对于非数据库莫属的工作,客户端开发工具表现特征是怎样?客户端开发工具如何针对他们编程?1/1/20244:13AM在实际应用中可能遇到下列问题

(1)维护体现企业规则的表间关系可用客户端开发工具编程完成,也可用数据库触发器来控制。这种表间的关系是随着企业规章制度的变化而变化的。如果用客户端开发工具编程来实现,则程序的维护将是很困难的。原则上,此类问题应该用触发器来解决,用触发器来实现具有以下优点:①企业规则可以在数据库中集中控制。②如果企业规则发生变化只需修改相应数据库触发器的内容,无需修改客户端应用程序,系统容易维护。③客户端应用程序编程变得更简单。④系统运行效率会提高。但过多地滥用触发器反而会使系统的效率降低。1/1/20244:13AM在实际应用中可能遇到下列问题(2)体现企业规则的数据运算可用客户端开发工具编程完成,也要用存储过程完成。这种计算是随着企业规章制度和国家的政策的变化而变化。如果用客户端开发工具编程来实现,程序的维护也很困难。像这样的问题应该用存储过程来实现。用存储过程实现具有以下优点:①企业规则可以在数据库中集中控制。②如果企业规则发生变化只需修改相应存储过程的内容,无需修改客户端应用程序,系统容易维护。③客户端应用程序编程变得更简单。④系统运行效率会提高。1/1/20244:13AM在实际应用中可能遇到下列问题(3)事务是由数据库管理的最小逻辑工作单元,在一个事务中所有对数据库的更新操作要么全部成功,要么全部失败。事务的划分(起点和终点)是客户端开发工具的任务,但在窗口环境下如何划分事务,如何编写管理事务程序是一个较难的问题。(4)并发处理是多人同时更新数据库中相同数据时的处理方式,数据库可以自动加锁,但这种自动加锁方式不一定适合实际需要。在实际的并发条件下会出现很多难以预料的复杂情况,“恰当”地加锁是客户端开发工具的任务,也是一个较难的问题。1/1/20244:13AM在实际应用中可能遇到下列问题(5)序号生成。应该由数据库来完成。(6)视图。视图是数据库中原始数据的某种变换。有的时候,这种变换可以用开发工具来完成。但视图的许多优良特性是客户端开发工具不具有的。哪些工作应由开发工具来完成,哪些工作应由视图来完成,是数据库设计人员和开发人员要认真研究的问题。

1/1/20244:13AM1/1/20244:13AMEJB框架

EJB分布式应用程序是基于对象组件模型的,低层的事务服务用了API技术。EJB技术简化了用JAVA语言编写的企业应用系统的开发、配置。EJB技术定义了一组可重用的组件:EnterpriseBeans。你可以利用这些组件,像搭积木一样的建立你的分布式应用程序。当你把代码写好之后,这些组件就被组合到特定的文件中去。每个文件有一个或多个EnterpriseBeans,再加上一些配置参数。最后,这些EnterpriseBeans被配置到一个装了EJB容器的平台上。客户能够通过这些Beans的home接口,定位到某个Bean,并产生这个Bean的一个实例。这样,客户就能够调用Bean的应用方法和远程接口。EJB服务器作为容器和低层平台的桥梁管理着EJB容器和函数。它向EJB容器提供了访问系统服务的能力。例如:数据库的管理和事务的管理,或者对于其它的Enterprise的应用服务器。所有的EJB实例都运行在EJB容器中。1/1/20244:13AMEJB框架容器提供了系统级的服务,控制了EJB的生命周期。EJB中的有一些易于使用的管理工具如:(1)Security:配置描述器(TheDeploymentdescriptor)定义了客户能够访问的不同的应用函数。容器通过只允许授权的客户访问这些函数来达到这个效果。(2)RemoteConnectivity:容器为远程链接管理着低层的通信issues,而且对EnterpriseBeans的开发者和客户都隐藏了通信细节。EJB的开发者在编写应用方法的时候,就像是在条用本地的平台一样的。客户也不清楚他们调用的方法可能是在远程被处理的。

1/1/20244:13AMEJB框架

(3)LifeCyclemanagement:客户简单的创建一个Enterprisebeans的实例,并通常取消一个实例。而容器管理着EnterpriseBeans的实例,使EnterpriseBeans实现最大的效能和内存利用率。容器能够这样来激活和使EnterpriseBeans失效,保持众多客户共享的实例池。(4)Transactionmanagement:配置描述器定义了Enterprisebeans的事务处理的需求。容器管理着那些管理分布式事务处理的复杂的issues。这些事务可能要在不同的平台之间更新数据库。容器使这些事务之间互相独立,互不干扰。保证所有的更新数据库都是成功发生的,否则,就回滚到事务处理之前的状态。1/1/20244:13AMEJB框架

EJB组件是基于分布式事务处理的企业级应用程序的组件。所有的EJB都有如下的特点:EJB包含了处理企业数据的应用逻辑。定义了EJB的客户界面。这样的界面不受容器和服务器的影响。于是,当一个EJB被集合到一个应用程序中去时,不用更改代码和重新编译。EJB能够被定制各种系统级的服务,例如安全和事务处理的特性,都不是属于EJB类的。而是由配置和组装应用程序的工具来实现。有两种类型的EJB:SessionBeans和EntityBeans。SessionBeans是一种作为单用户执行的对象。作为对远程的任务请求的相应,容器产生一个SessionBean的实例。一个SessionBean有一个用户。从某种程度上来说,一个SessionBean对于服务器来说就代表了它的那个用户。SessionBeans也能用于事务,它能够更新共享的数据,但它不直接描绘这些共享的数据。SessionBeans的生命周期是相对较短的。典型的是,只有当用户保持会话的时候,SessionBeans才是活着的。一旦用户退出了,SessionBeans就不再与用户相联系了。SessionBeans被看成是瞬时的,因为如果容器崩溃了,那么用户必须重新建立一个新的Session对象来继续会话。1/1/20244:13AMEJB框架

SessionBeans典型地声明了与用户的互操作或者会话。也就是说,Sessionbean了在客户会话期间,通过方法的调用,掌握用户的信息。一个具有状态的SessionBean称为有状态的SessionBean。当用户终止与SessionBeans互操作的时候,会话终止了,而且,bean也不再拥有状态值。SessionBean也可能是一个无状态的SessionBean。无状态的SessionBeans并不掌握它的客户的信息或者状态。用户能够调用Beans的方法来完成一些操作。但是,Beans只是在方法调用的时候才知道用户的参数变量。当方法调用完成以后,Beans并不继续保持这些参数变量。这样,所有的无状态的SessionBeans的实例都是相同的,除非它正在方法调用期间。这样,无状态的SessionBeans就能够支持多个用户。容器能够声明一个无状态的SessionBeans,能够将任何SessionBeans指定给任何用户。1/1/20244:13AMEJB框架

EntityBeans对数据库中的数据提供了一种对象的视图。例如:一个EntityBean能够模拟数据库表中一行相关的数据。多个Client能够共享访问同一个EntityBean。多个Client也能够同时的访问同一个EntityBean。EntityBeans通过事务的上下文来访问或更新下层的数据。这样,数据的完整性就能够被保证。EntityBeans能存活相对教长的时间,并且状态是持续的。只要数据库中的数据存在,EntityBeans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,EntityBeans也是存活的。EntityBeans生命周期能够被容器或者Beans自己管理。如果由容器控制着保证EntityBeans持续的issues。如果由Beans自己管理,就必须写EntityBeans的代码,包括访问数据库的调用。

EntityBeans是由主键(primarykey一种唯一的对象标识符)标识的。通常,主键与标识数据库中的一块数据,例如一个表中的一行的主键是相同的。主键使client能够定位特定的数据块。1/1/20244:13AMEJB包容器包容器是组件的一种运行环境。组件驻留于包容器,而包容器为组件提供服务。类似地,包容器通常驻留于应用程序服务器,该服务器为它和其他包容器提供运行环境。从技术上讲,组件只与其包容器和包容器提供的资源相交互。由于包容器与应用程序服务器之间的接口没有得到有效的定义,所以单独的供货商几乎总是同时提供这二者,并且区分通常是没有意义的。如果一个位于包容器与应用程序服务器之间的API被标准化,此时,区别将变得更为重要。

1/1/20244:13AMEJB包容器编写EJB组件的主要理由是为了利用包容器所提供的服务。理解这些服务的内涵有助于确定,在设计过程中,应该在什么时候使用EJB组件,以及它们应该扮演的角色。下面是EJB包容器可以提供的一些服务。(1)持久化当然,可以使用JDBCAPI直接读写数据库。如果只需要读一些数据,以便生成一个动态Web页面,或者更新一些简单的信息,那么这样处理可能是合适的。如果读者有更复杂的需求,EJB可以提供各种持久化服务。这些服务包括从简单的池连接至自动化管理持久化,并且避免应用程序开发人员编写SQL代码。除非使用一种类似于对象/关系映射框架的工具,编写数据库访问代码容易出错并且耗时。在介绍没有采用自动持久化的EJB时,EJB规范意识到这种事实,“希望大多数的企业Bean将由应用程序开发工具创建,这些工具将在组件中封装数据库访问”。1/1/20244:13AMEJB包容器

(2)声明性事务JDBCAPI的确提供了管理事务的功能,而且该功能可以从Servlet或者JSP中得到较好的实现。然而,事务管理可能很复杂,尤其是,如果涉及多数据库访问组件与多数据源。EJB可以无需任何编码就可以实现对复杂事务的管理。读者可能已经听说过与事务管理相关的两种JavaAPI。JTA或者JavaTransactionAPI,提供了事务管理器、应用程序服务器、资源管理器和应用程序或应用程序组件之间的一种标准接口。除了UserTransaction接口,该API中的任何一个接口都不是为应用程序员所设计的,而且读者可以也不应该使用UserTransaction接口,甚至JTS(JavaTransactionService,Java事务服务)似乎也不适合由应用程序员直接使用。这是专门为开发商设计的规范,用于映射JTA解决方案至CORBAObjectTransactionService1.1规范。

1/1/20244:13AMEJB包容器

(3)数据缓存在特定的环境下,EJB数据缓存可以导致应用程序性能与伸缩性的显著改善,并且不需要应用程序开发人员编写任何代码。(4)安全性在每一个应用程序中,必须保证对数据与业务逻辑的访问功能的安全性开发人员可以使用Servlet或JSP页面提供安全性,但是,这可能是一种复杂并且容易出错的任务。如果多个Servlet或JSP页面通过公用业务逻辑使用类。因此,应用程序需要提供定制的安全框架,不需要任何编程就可以实现对EJB组件访问的控制。1/1/20244:13AMEJB包容器

(5)错误处理如果没有一种确定且统一的出错处理框架,应用程序无论大小,都不太可能取得成功。EJB规范明确定义了错误对事务、客户端的结果、服务器登录和组件恢复的影响。(6)业务逻辑的组件框架开发复杂的业务逻辑软件需要投入大量的企业资源。意识到这一点之后,软件开发人员几十年一直追求实现软件的重用目标。组件重用已经成为最成功的策略之一。作为服务器端组件的EJB,可以同时被多个客户端使用,由于servlet和PSP表示的Web服务器端表示逻辑,以及大量其他客户端类型(诸如VisualBasic程序、Execl表单等)。如果应用程序包含的业务逻辑需要大量的开发投资,EJB是一种可以获得最大投资回报的理想途径。1/1/20244:13AMEJB包容器

(7)伸缩性与错误修复

EJB规范要求应用程序开发人员在编写业务逻辑组件时遵循确定的规则。依靠这些规则,应用程序服务器才能实现对大量并发客户端实施管理,这些客户端对业务逻辑组件与数据访问组件有明确的要求。同样是依靠这些规则,应用程序服务器才能运行于集群环境(跨越大量的机器),并且对任何的群集结点错误实施修复。尽管Web服务器也可以实施扩展,但Web包容器却不是为包含业务逻辑与数据库访问代码的扩展组件而设计的,EJB包容器就是如此。Web层的等价服务组件,JavaBean,只有通过定制化地编程才能实现“池”。Servlet或JSP则没有提供这样的机制。

1/1/20244:13AMEJB包容器(8)可移植性尽管应用程序开发人员可以提供与EJB包容器所提供的同样服务,但是,必须单独地开发与集成这些服务。如果商业环境对应用程序提出了新的需求,这些新的需求必须通过定制代码(或至少是购买必须人工集成的技术)来实现。由于EJB是为一种行业标准的API而编写的,它们通常不需要改动就可以运行于一种提供了扩展功能的新应用程序服务器。(9)可管理性管理包含业务逻辑与数据访问的Web组件的基本问题在于,对于管理工具而言,它们是不可见的。例如,考察控制谁可以修改消费者的信用卡问题。用EJB实现该功能的安全性,开发人员只需要使用由EJB包容器提供的声明性访问控制。为了管理访问,可以从合适的角色中增加或者删除用户。对于纯粹用Web组件开发等价应用程序,为了实现其安全性,开发人员必须保护对每一个用户接口的访问(即Web监视)。

1/1/20244:13AM包容器如何提供服务

无需太过深入的了解其细节,就可以帮助读者掌握这种机制的一些思路。EJB包容器依靠该机制向EJB组件提供各种服务。该机制包含三种基本的思想。首先,使用EJB组件——客户端、EJB包容器和EJB组件(以及在EJB2.0持久化管理器)的应用程序的各部分之间明确定义了职责。这些职责的定义正式地称为契约。其次,包容器提供的服务以这样一种方式定义,即它们与组件保持垂直关系,也就是说,安全性、持久化、事务和其他服务与实现组件的业务逻辑的Java文件是分开的。再次,包容器中介每个对EJB组件的调用,以便它可以提供服务。换句话说,在每个业务方法调用时,包容器将自己置于客户与组件之间。1/1/20244:13AM包容器如何提供服务

1.契约在这里,契约是提供对软件不同层次之间职责的一种简单描述。如果软件的每种层次都遵循各自的契约规则,它就可以与其上、下层次保持有效的协作,而不需要了解哪个层次的任何其他信息。这通常意味着,只要遵循契约,不用重新编写自己的代码就可以合成与配匹层次。EJB1.1规范包含一种合理定义的层次:客户bean和包容器(EJB2.0补充了另一种层次,即持久化管理器)。作为这些层次之间契约的结果,bean可以无改动地运行于不同的包容器。客户端可以不用改动地访问不同的bean。当然,编写契约不仅仅是为了出于移植性的考虑。这些规则是经过周密处理的,以便服务器开发商可以基于不同的技术创建自己的多功能服务器。Bean程序员可以遵循这些相对简单的规则和型式,应用这些应用程序服务器的服务与功能。1/1/20244:13AM包容器如何提供服务Bean程序员就遵循哪些规则?主要有:EJB组件开发人员(又称为bean提供者)必须在实现类中实现业务方法(对应用程序逻辑提供访问的任何方法)。Bean提供者必须实现ejbcreate()、ejbpostcreate()、ejbremove()方法,如果是包含bean管理持久化的实体bean,还必须实现ejbfind<METHOD>()方法。Bean提供者必须定义企业级bean的本地接口与远程接口。对于会话bean,bean提供者必须实现在javax.ejb.SessionBean接口中定义的包容器回调方法。对于实体bean,bean提供者必须实现在javax.ejb.EntityBean接口中定义的包容器回调方法。Bean提供者必须使用编程技巧,将它与包容器对企业级bean实例的运行时管理连接。1/1/20244:13AM包容器如何提供服务

2.服务EJB包容器是为了给bean程序员提供服务而存在的。一般情况下,bean程序员只需要遵循规则就可以自动地利用这些服务。它们可以只通知包容器应该提供什么服务的详细资料。这个“通知包容器”又称为声明性语法,并且是EJB的最优特性之一。声明性信息是在称为配置描述的文件中定义的。对于很多特性,甚至这种声明性信息也并非必需,并且包容器将提供特性,而根本无需bean程序员做任何工作。事务管理是包含EJB包容器的每个应用程序服务器都提供的服务之一。事务是系统在面临冲突与故障而保持数据一致性的机制。包容器将让应用程序开发人员确定——无需任何编程——如何处理由客户端对企业数据的修改,以便保证一致性。1/1/20244:13AM包容器如何提供服务

EJB包容器提供的另一种重要服务是自动持久化。这是一种可由bean开发人员选择的特性,不过,它为很多项目提供了有价值的替换方法,从而避免编写几千行数据访问代码。还有很多每个包容器都将提供的服务。声明性安全避免EJB资料的未经授权访问。资源管理(诸如,连接池)和并发控制方便了多用户访问。出错处理便于应用程序开发人员提高效率。通信服务简化了远程访问。1/1/20244:13AM包容器如何提供服务有些包容器将提供可选的服务。大型项目的一个重要选项是包含错误修复与伸缩性的集群技术。管理工具不是EJB规则的组成部分,但是,服务器开发商将其作为可选组件提供,并且对任何项目的成功与否至关重要。可用的服务选取项只受开发商想象力的局限。随着JavaAPI的普及,这些附加的服务可能成为标准。即将发布的管理API(JMX)就是这样一个例子,它可以为管理方案提供最不常见的命名者。对于所有这些服务,最重要的是应该知道,他们都是由包容器开发人员,而不是由业务逻辑程序员实现的。即使包容器开发人员完全不了解业务逻辑,这也是可行的,因为业务逻辑组件——EJB——遵循规范所定义的契约。1/1/20244:13AM包容器如何提供服务

3中介应用程序开发人员遵循bean开发契约的规则,而包容器因此可以提供系统级服务。不过,目前可行吗?仍然存在大量需要处理的问题。编写一种有效的EJB包容器是一件困难的任务。但是,存在一种核心的概念,即中介,它可以简单开发人员对EJB包容器的理解。

EJB包容器介入客户端业务逻辑与EJB业务逻辑之间,提供诸如事务、安全性、出错处理和持久化管理等服务。1/1/20244:13AM包容器如何提供服务考察一个远程客户端对企业级JavaBean的典型方法调用:●首先,客户端执行一个对RMIstub的调用。●该RMIstub中介方法调用,以便调度参数、并且通过网络发送信息。●服务器端框架反调度参数,并且将它们交付EJB包容器。不过,方法调用还没有涉及业务逻辑。现在,出现了第二个中介:●包容器将对方法调用者进行安全性验证。●它将启动或者介入任何需要的事务。●它将对持久化函数执行任何必要的调用。●它将激活各种回调,以便EJB组件能够请求资源。●只有这些都完成之后,才调用实际的业务方法。●一旦它被调用,包容器将执行事务、持久化、回调等任务。●最后,业务方法的结果将被发送回远程客户端,可能是一个返回数据,也可能是一个异常。

1/1/20244:13AM包容器如何提供服务这解释了EJB技术中比较抽象的部分。应用程序开发人员将编写一个声明其业务逻辑的接口,并且还需要编写实现这些方法的类。不过,如上所述,该类不需要实现接口,实际上,这里强烈建议程序员不要在自己的业务逻辑类中实现该接口。因此,在接口中的远程方法调用是如何一步步地到达对应的业务逻辑实现方法呢?基本上,已经用一种命名惯例进行了替换接口实现。包容器将使用Java中介——无论是配置EJB,还是运行EJB——配匹接口中的方法与实现中的函数。

1/1/20244:13AMEJB类型此前曾介绍过,EJB是中间层中的服务器方业务逻辑组件。实际上,EJB类型有几种:会话Bean(Sessionbeans)实体Bean(Entitybeans)消息驱动的Bean(Message-drivenbeans)下面介绍每种EJB类型及其作用。

1/1/20244:13AMEJB类型顾名思义,会话Bean的寿命与所在客户会话的寿命一样长,即在这个客户交互期间有效。这样会话Bean可以分为下列几种:无状态会话Bean——不声明任何实例(类型)变量。因此,每个方法只能操作局部参数,无法在方法调用之间维护状态。状态会话Bean——在方法调用之间维护状态。这种会话Bean在类定义中声明实例变量。客户在方法调用期间设置这些变量的值,在其他方法调用期间使用这些变量的值。

1/1/20244:13AMEJB类型从上述介绍可以看出,无状态会话Bean与状态会话Bean的主要差别(从Bean开发人员角度看)是实例变量的声明。具体地说,任何具有类级变量声明的会话Bean都是状态会话Bean。不难看出,无状态会话Bean能提供很好的伸缩性,因为容器不需要在方法调用之间记住Bean状态。但是,保存EJB状态需要大量资源,因此状态会话Bean比无状态会话Bean在服务器中涉及更多工作。因此,在应用程序中使用状态会话Bean之后,可能减少其伸缩性。1/1/20244:13AMEJB类型

(2)实体Bean实体Bean用于映射基础数据库表格,生成数据库的对象视图。例如,如果数据库中有表格Customer,则可以生成一个实体Bean,将表中每一行映射到Bean,表中每一列映射到Bean的相应实例变量。这样,实体Bean总是状态Bean。实体Bean根据谁负责同步Bean状态(实例变量值)与基础数据库而进行分类。因此,可以将实体Bean分为下面几类:容器管理的持久性(CMP,Container-managedpersistence)这里容器负责同步Bean状态(实例变量值)与基础数据库。客户在寿命周期中可以多次修改Bean状态,多个客户可能在不同时间修改Bean状态。容器要负责保证使用CMPBean时的数据一致性与完整性。容器提供同步状态所需的代码,主要是INSERT、MODIFY、DELETE之类的SQL语句。容器在Bean部署时自动产生所有这些语句。但一定要注意的是,CMP要求基础数据库是关系型的。

1/1/20244:13AMEJB类型

Bean管理的持久性(BMP,Bean-managedpersistence)这里Bean编程人员负责同步Bean状态(实例变量值)与基础数据库。Bean编程人员要在Bean实现类中编码所有需要的SQL语句和JDBC调用。容器负责在适当时候通过回调方法调用这个代码,跟踪Bean状态何时搞脏和需要同步。相应地,它调用Bean实现类中的回调方法,Bean编程人员负责提供必要的同步代码。

CMP容器直接提供服务,而BMP实体Bean还需要Bean编程人员增加编程,为什么用BMP呢?有时需要增加设计灵活性或在非关系型存储中支持持久性。例如,EJB规范V1.1只允许实例变量和表格列之间的一对一映射。这样,使用这个版本时,如果要在实体Bean中表示在多个表格中存储状态的累计对象,则无法使用BMP。EJB2.0规范定义了复杂查询语言(QL,QueryLanguage),用于持久性管理。1/1/20244:13AMEJB类型

(3)消息驱动的Bean消息在当今的分布式计算机体系结构中起着重要作用。消息本身是异步的,而方法调用通常是同步的。如果要向EJB中实现的业务逻辑发送一个消息,怎么办?由于消息本身是异步的,因此发消息时不能保证访问Bean。这样,应用程序接收消息时需要生成或激活Bean。这里就需要用到消息驱动的Bean。消息驱动的Bean是在收到异步消息时驱动的。消息驱动Bean是EJB2.0规范中增加的。

1/1/20244:13AMEJB中的角色

EJB2.0规范定义了以下六种不同的角色来完成其任务。(1)企业bean开发者企业bean开发者负责开发执行商业逻辑规则的EJB组件,开发出的EJB组件打包成ejb-jar文件。企业bean开发者负责定义EJB的远程接口和自身接口,编写执行商业逻辑的企业bean类,提供部署EJB的部署描述符(Deploymentdescriptor)。部署描述符包含EJB的名字,EJB用到的资源配置,如JDBC等。企业bean开发者是典型的商业应用开发领域专家。1/1/20244:13AMEJB中的角色(2)应用组装者应用组装者负责利用各种EJB组装成大的可部署的应用系统单元。应用组装者根据企业bean开发者提供的ejb-jar文件,创建出包含应用组装说明的ejb-jar文件。应用组装者有时还需要提供一些相关的程序,如在一个电子商务系统里,应用组装者需要提供JSP程序。应用组装者必须掌握所用的EJB的自身接口和远程接口,但不需要知道这些接口的实现。1/1/20244:13AMEJB中的角色

(3)部署者部署者负责将企业bean开发者或应用组装者的ejb-jar文件部署到用户的系统环境中。系统环境包含某种EJB服务器和EJB容器。部署者必须保证所有由EJB组件开发者在部署文件中声明的资源可用,例如,部署者必须配置好EJB所需的数据库资源。部署过程分两步:部署者首先利用EJB容器提供的工具生成一些类和接口,使EJB容器能够利用这些类和接口在运行状态管理EJB。部署者把EJB组件和其他在上一步生成的类安装到EJB容器中。部署者是某个EJB运行环境的专家。1/1/20244:13AMEJB中的角色(4)EJB服务器提供者EJB服务器提供者是系统领域的专家,精通分布式交易管理,分布式对象及其它系统级的服务。一个典型的EJB服务器提供者是一个操作系统开发商、中间件开发商或数据库开发商。在目前的EJB规范中,假定EJB服务器提供者和EJB容器提供者来自同一个开发商,所以,没有定义EJB服务器提供者和EJB容器提供者之间的接口标准。1/1/20244:13AMEJB中的角色

(5)EJB容器提供者EJB容器提供者提供以下功能:提供部署企业bean所需的部署工具。提供对已部署好企业bean实例运行时刻的支持。由企业bean看来,EJB容器是目标系统环境的一部分。EJB容器为部署企业bean提供运行环境,EJB容器负责为企业bean提供事务管理,安全管理等服务。

EJB容器提供者必须是系统级的编程专家,还要具备一些应用领域的经验。EJB容器提供者的工作主要集中在开发一个可伸缩的,具有事务管理功能的集成在EJB服务器中的容器。EJB容器提供者为企业bean开发者提供了一组标准的、易用的API访问EJB容器,使EJB组件开发者不需要了解EJB服务器中的各种技术细节。

EJB容器提供者负责提供系统监测工具用来实时监测EJB容器和运行在容器中的EJB组件状态。1/1/20244:13AMEJB中的角色

(6)系统管理员系统管理员负责为EJB服务器和容器提供一个企业级的计算和网络环境。系统管理员负责利用EJB服务器和容器提供的监测管理工具监测EJB组件的运行情况。

1/1/20244:13AMEJB中的角色企业应用具备系统级服务的容器在企业特定应用环境中配置的容器系统管理员安装容器其他组件一个ejb-jar文件中的企业bean一个ejb-jar文件中的企业beanEJB容器提供者和服务器提供者企业bean开发者编写商业逻辑业务问题包含应用组装说明的ejb-jar文件等部署者应用组装者1/1/20244:13AMEJB的特性

(1)分布式事务的支持随着计算机网络技术的发展,应用程序开发人员所面临的最复杂的问题之—是编写分布式事务应用程序。EJB支持分布式事务;EJB技术可编用访问跨越多个EJB服务器的多重分布式数据库的应用程序。EJB规范允许在部署阶段就以声明的形式指出事务行为,而管理事务行为的负担被转移给服务器,特别是转移给容器和EJB服务器提供者。如果Bean的开发人员有更高的事务需求,则可使Bean通过程序来管理事务界限。

1/1/20244:13AMEJB的特性

(2)安全性能安全是所有企业产品的需求。EJB组件模型充分发挥了核心Java平台安全模型的作用,两种设置安全的方法。第一、可以在Bean的EJB-JAR文件中设置安全描述符;第二、可以使用java.security包实现对安全的程序化管理。(3)EJB是独立于对象的通信协议首先、它可以使编写客户端应用程序的程序员免于选择通信协议。其次,它允许EJB服务器的建立者实现对其用户最为重要的协议。例如,ORB提供者可能仅仅实现CORBA协议,而Unix提供者则可能实现RMI和CORBA协议。但无论如何,所用协议对Bean的开发人员是透明的,仅仅针对Java平台来编写程序。

1/1/20244:13AM认证

认证是指用户向系统证明他是谁的过程。在J2EE中,应用服务器使用认证来控制客户端对应用程序或组件的访问。

J2EE中的用户、域和组(1)域域代表使用相同认证方式的一群用户。如在J2EE中有两个域:Certificate和Default。Certificate用于在HTTP协议中认证WEB用户,服务器在认证该类用户时,需使用X509证书。而Default域用于除WEB浏览器用户之外的所有用户。(2)组组只适应于Default域,它是对用户的逻辑分类,Default域中每一用户都可属于一个组。1/1/20244:13AM客户端认证

J2EE认证服务对客户端的访问进行控制。当一个J2EE应用程序客户端开始运行时,容器会打开一个窗口要求用户输入用户名和密码。容器认证通过后,产生一个安全的Context对象和此用户联系起来,用户每次调用容器中的Bean时,都需要使用此对象来获得安全性信息。当客户端要访问受保护的WEB层资源时,WEB容器激活为该资源设置的认证机制,对用户进行认证。设置WEB资源的认证机制有3种方法:HTTP基本认证、基于表单的认证和客户端认证证书认证。1/1/20244:13AM认证

(1)HTTP基本认证如果设置此种认证机制,WEB容器使用WEB客户端获取的用户名和密码进行身份认证,这各认证方式没有经过加密。(2)基于表单的认证这种认证方式允许用户自己定制登录界面。可以选择如果认证失败或出错,要把用户导向哪一个错误提示页面。这种认证方式也没有经过加密。(3)客户端认证证书如果设置此种认证方式,服务器使用X.509证书认证客户端,是最安全的一种方式,在此种认证方式的数据传输使用了SSL,所有数据都消费品了安全层的加密。1/1/20244:13AM授权

授权是指应用服务器授予某个用户访问哪些Bean的哪些方法的权限,用户可为每一个Bean的每一个方法设置其安全性。一般分为三步:(1)定义角色(2)设置Bean的方法的访问权限(3)把角色映射到用户或组。1/1/20244:13AM安全授权的传递

如果有两个Bean,第一个Bean需要调用第二个Bean的某种方法,有两种方式进行授权:(1)让第二个Bean继承第一个Bean的授权(2)单个授权J2EE概述J2EE产生背景J2EE技术

J2EE产生背景J2EE由来体系结构实现多层应用程序的解决方案J2EE由来90年代早期,传统企业信息系统提供商通过从两层,客户端/服务器应用模型向灵活的三层和多层应用模型的迁移响应客户的需求。新模型将业务逻辑从系统服务和用户界面分离出来,将其作为中间层摆在这二者之间。新的中间件服务,事务监控,面向消息中间件,对象请求代理等的发展为这种新的架构提供了推动力。这时的Internet或Intranet使用的增长显露出原有编程模型对生成易于分布的客户端的不足。多层结构设计戏剧性地简化了开发、布署和维护企业应用。使应用开发者可以专注于业务逻辑细节的编程,依靠后端服务提供基本服务,客户端应用(包括独立和Web浏览器包容)提供用户交互。开发完成之后,业务逻辑根据实际的需要部署在服务器上。然而,除了这些优点,模型制订了开发者的从标准化组件建立应用,在广泛的不同的平台上部署单个应用或简单地制定应用规模来适应变化中的业务状况的能力。J2EE由来

这些努力都导向J2EE技术的形成。首先,JavaServlets技术显示开发者热衷于生成运行于任何支持Java平台的Web服务器上的类似于CGI的行为。第二,JDBC技术提供了将“一次编写,到处运行”的Java编程语言与已有的数据库管理系统结合的模型。最后,EnterpriseJavaBeans的成功显示了将一系列完整行为封装到易于配置,已有的可重用组件中是非常有用的。这三点集中到一起,Java语言编写的服务器端行为,连接已有的企业系统和模块的连接器,易于部署的组件,最终结合形成J2EE。体系结构

在电子商务迅猛发展的今天,商业社会的各个部门需要依赖企业级应用程序来共同完成自己的工作,比如:企业之间需要在线交易;企业的电子商务网站需要使用银行的系统进行在线支付和结算;企业要进行网上分销和采购;政府部门的城市规划需要使用网络来进行招标投标等等。可以预见,在不久的将来,企业级的应用程序将大大影响社会经济的发展。开发企业级应用程序的关键是在强调时间性(即适时性)的同时,还要求程序部署方便、移植灵活、容易升级和更新等。这对应用程序开发人员提出了两个基本的开发要求:快速和有效。那么快速开发和部署高质量的应用程序的关键又是什么呢?是“体系结构”,或者说是编程的模型。在计算机领域里,“Model”和“Architecture”两词占有相当重要的地位:好的模型常常能够让程序的开发工作事半功倍;好的体系结构通过合理的层次划分不仅可以提高开发效率,而且还可以为程序的升级和移植提供便利。体系结构

每当谈到企业级应用开发的时候,都会提到N层体系结构。典型的客户/服务器系统是基于两层结构的,其中在数据层和表示层/业务逻辑层之间有着清晰的界线。这类应用一般都是数据驱动的,应用在客户机上,并且在企业中会配置一个数据库服务器。虽然在这种结构下,企业内部可以共享数据,但是它有许多缺点。

体系结构

(1)2层体系结构(C/S)在传统的2级结构中,处理负载都位于客户PC机上,而服务器仅充当了应用程序和数据之间的传输控制器。结果,不仅应用程序的性能受限于PC机资源,而且网络流量也增加了。当整个应用程序都在PC机上运行时,在把结果呈现给用户之前,应用程序不得不多次访问数据库,这种多次访问数据库的方式浪费了网络带宽。

2层体系结构的另外一个问题是可维护性。哪怕是对应用程序的一个小小的修改都会涉及到把整个应用重新分发给用户。即使这个过程是自动化的,仍然要在每一个客户机上更新应用的问题。另外,一些用户可能还来不及更新整个应用程序,而其他一些用户已经及时作了更新,就会造成不同的客户使用的应用程序版本不一致。体系结构

(2)3层体系结构为了解决这些问题,软件界提出了一种3层体系结构的概念。应用层被划分为几个相互隔离的逻辑层。每一逻辑层都定义好一套接口集。第一层,也就是表示层,主要由类似于图形用户界面的部分组成;中间层,即业务层,由应用逻辑和业务逻辑构成;而第3层——数据层——包括了应用程序所需要的数据。中间层(应用逻辑)代码由用户调用(通过表示层)来获取所需要的数据。表示层接收数据并且按照适当的格式显示出来。从用户界面中分离出来的应用逻辑,极大地增强了应用程序设计的灵活性。在应用逻辑对表示层提供了一套定义清晰的接口的情况下,甚至不用改变应用逻辑部分,就可以建立和分发多种用户界面。1/1/20244:13AM体系结构

用户接口应用逻辑XML文档DB体系结构

第3层包含了应用程序所需要的数据。这些数据可以由不同的信息源组成。例如Oracle和Sybase那样的数据库,也可以是XML文档(按照XML规范存放的数据)集,还可以是如LDAP服务器的目录服务。除了传统的关系数据库存储机制外,还有许多种应用程序可以访问的不同的企业数据源。然而,对应的层次划分还没有终止,最终的目的是创建N层体系结构的应用。体系结构

在N层体系结构中,要较快地定义各个应用层并不容易。实际上,一个N层结构系统能够支持多种不同的配置,在N层结构中,应用逻辑的划分是根据功能而不是根据物理方面来进行的。

N层结构的划分方式如下:

(1)用户接口层:负责处理用户与应用程序之间的交互过程;它可以是一个通过防火墙运行的WEB浏览器,也可以是一般的桌面应用程序,甚至还可以是无线设备。

(2)表示逻辑层,定义了用户界面要显示的内容和如何处理用户的请求——根据所支持的是什么样的用户接口。对于相应的客户,表示逻辑层版本会有相应的不同。体系结构(3)业务逻辑层:通过与应用数据打交道,对应的业务规则实施建模。(4)基础框架服务层:提供了应用系统需要的其他功能,如传输消息、事务支持等等。(5)数据层:存放企业的应用数据。基于这种结构的应用程序采用了模型—视图—控制器(Model–View–Controller,MVC)模式。采用这种模式的目的是要把数据(模型)与如何表示信息的部分(视图)分离出来。它们两者之间是由应用/业务逻辑(控制器)来控制信息的流向。通过这种模式,就能设计出基于三种相互交互的功能组件(模型、视图、控制器)的应用程序。1/1/20244:13AM体系结构浏览器XML文档DB表示逻辑业务逻辑应用客户服务防火墙体系结构(4)企业结构到目前为止,所有的讨论只集中在单个应用程序的结构上,而实际上,把这些应用程序看作是独立而封闭的是不行的。也就是说,不能仅仅把这些应用看成是不同的——甚至可能是不同体系结构的——它们之间不相互通信。在企业中,应当寻找一种内在统一的、整体的方式来对待这些应用。不需要在结构上作变动——企业级结构本质上是N层的——需要在对应的认识上作一些变化。要把N层结构应用到企业级系统中,只需要简单地考虑用多个应用对象而不是单个简单应用来扩展中间层。这些应用对象都必须有各自的接口,从而允许它们之间相互协调工作。体系结构接口就像契约。每个对象通过接口来接受一定的参数,并返回相应的结果集。应用对象通过使用接口来进行相互之间的通信。就企业级结构来说,在各个部门之间采用一组通用的组件就可以实现多种应用。从而,通过创建一套具有业务功能的模块集合使整个企业访问,就可以使各种商业实践标准化。如果商业规则发生了变化,那么只需要对商业对象做修改就行了;若有必要的话,也可以修改接口,那就需要修改访问该接口的任务对象。要注意的重要的一点是:当在设计应用对象及其接口时,最好尽可能使得接口通用化,以免以后修改。因为其他对象通过应用对象的接口而不是其本身进行通信的,所以修改对象本身与修改接口相比,前者要相对简单和快捷得多。实现多层应用程序的解决方案(1)微软.NET体系结构微软.NET体系结构是WindowsDNA体系结构的升级版本。.NET平台最重要的部分是.NETFramework,这是一个与操作系统紧密相关的综合运行环境,它包括面向组件的中间层基础结构COM+、CLR(CommonLanguageRuntime)环境、一个运行时的编译器和一组使用.NET组件模型的操作系统库。程序员的开发工具是VisualStudio.NET。表示层程序员使用VisualStudio.NET来定义向瘦客户端系统提交HTML页面格式的显示逻辑;商务层程序员使用VisualStudio.NET以多种语言实现商务逻辑,然后将商务逻辑打包为COM+组件。VisualStudio.NET是中性的语言,也就是说应用程序可以采用多种语言开发,然后集成到一块,这一点可以说是.NET一大优势。.NET的服务器端组件可用微软公司开发的VB.NET、VC.NET、C#等语言编写。微软公司把不同语言编写的组件COM翻译成一种中间语言(MicrosoftIntermediateLanguage),实现了程序的“跨语言”特性,这种中间语言通过CLR(CommonLanguageRuntime)执行(CLR类似于Java中的JRE)。将语言特性合并到一种通用运行语言CLR中,而不是合并到一种特定的语言中,这使得各种语言可以自由地在整个.NET平台内互用。实现多层应用程序的解决方案

客户端(浏览器、无线设备等)采用ASP.NET与服务器端组件交互;服务器组件通过ADO.NET访问数据库;组件运行于MTS或COM+中;消息处理采用MSMQ。此外.NET还支持多种服务器:最新的.NET企业级服务器是ApplicationCenterServer(应用中心服务器);InternetSecurityandAccelerationServer(Internet安全与加速服务器,ISAServer)重点解决表示层的需求;BizTalkServer是一个综合的集成产品;CommerceServer是用于创建电子商务站点的架构,它重点是解决电子商务零售业务的需求,使用CommerceServer提供的组件,并进行专门化,就可以快速地创建电子商务零售网站。

.NET的缺点是从开发到部署到运行,都只能采用微软公司的平台。此外,由于.NET还不够成熟,所以它的市场份额并不高。实现多层应用程序的解决方案

(2)SunJ2EE体系结构J2EE是由Sun公司领导、多家公司共同参与制定的一个企业应用程序开发标准。熟悉Java语言的人都知道,Java2平台有3个版本,它们分别是适用于小型设备和智能卡的Java2平台Micro版(Java2PlatformMicroEdition,J2ME)、适用于桌面系统的Java2平台标准版(Java2PlatformStandardEdition,J2SE)、适用于创建服务器应用程序和服务的Java2平台企业版(Java2PlatformEnterpriseEdition,J2EE)。SunJ2EE并不像微软公司的.NET那样是一系列的产品,而是一个规范和标准,任何一家公司都可以依据这些规范和标准来开发自己的产品。Sun公司的目的就是让多个厂家共同参与这个规范的制定,这样,只要以这样的规范来开发自己的产品就能给用户带来更大的开放性和可移植性,正是因为如此,基于Java的应用服务器要比.NET多得多。Java的开放性和Java本身具有的“一次编写、到处执行”的跨平台性使得J2EE在企业分布式计算领域中占据了很大的优势。后面将介绍到J2EE的相关技术。J2EE技术J2EE框架分布式结构和J2EEJ2EE相关技术EJB与JavaBean

J2EE框架J2EE是Sun公司推出的一种全新概念的模型,与传统的互联网应用程序模型相比有着不可比拟的优势。J2EE是一种利用Java2平台来简化诸多与多级企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如“编写一次,到处运行”的特性。方便存取数据库的JDBCAPI、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB、JavaServletsAPI、JSP以及XML技术的全面支持。J2EE使用了EJBServer作为商业组件的部署环境,在EJBServer中提供了分布式计算环境中组件需要的所有服务,例如组件生命周期的管理、数据库连接的管理、分布式事务的支持、组件的命名服务等等。有些企业级的EJBServer,例如Sybase公司的EAS3.6(EnterpriseApplicationServer)还提供了支持高可用性和高性能的群集技术、失败的自动转移和恢复、应用负载的自动均衡能力等。实现商业逻辑的EJB组件可以更加高效地运行在应用服务器中,支持多种客户端的访问,HTTP的客户端可以先向运行在WebServer上的JavaServlet或者JSP发出请求,在JSP中嵌入Java的代码调用运行在EJBServer中的EJB,以实现商业逻辑;而其他的客户端,可以通过IIOP直接访问运行在EJBServer中的组件。J2EE框架JDBCJMSJNDIIIOPRMIJavaMail(X)HTML/XMLApplet客户应用程序Web包容器ServletsJSPs标记库EJB包容器会话Beans实体BeansRDMSJava应用程序CORBA服务器邮件服务器消息队列目录服务HTTP(S)J2EE应用服务器客户数据应用逻辑图5J2EE总体结构JNDIJTARMI/IIOPJDBCJMSJavaMailJAFJNDIJTARMI/IIOPJDBCJMSJavaMailJAFJ2EE框架一个多层的分布式的应用模型意味着应用逻辑被根据功能而划分成组件,并且可以在同一个服务器或不同的服务器上安装组成J2EE应用的这些不同的组件。一个应用组件应被安装在什么地方,取决于该应用组件属于该多层的J2EE环境中的哪一层。这些层是客户层、Web层、业务层及企业信息系统层(EIS)(1)客户层(ClientTier)J2EE应用可以是基于Web的,也可以是不基于Web的。在一个基于Web的J2EE应用中,用户的浏览器在客户层中运行,并从一个Web服务器上下载Web层中的静态HTML页面或由JSP或Servlets生成的动态HTML页面。在一个不基于Web的J2EE应用程序中,一个独立客户程序,或者不运行在一个HTML页面中,而是运行在其它一些基于网络的系统(比如手持设备或汽车电话)中的Applet程序,在客户层中运行,并在不经过Web层的情况下访问EnterpriseBeans。该不基于Web的客户层可能也包括一个JavaBeans类来管理用户输入,并将该输入发送到在企业层中运行的EnterpriseBeans类来处理。J2EE框架(2)Web层J2EEWeb组件可以由JSP页面、基于Web的Applets以及显示HTML页面的Servlets组成。调用Servlets或者JSP页面的HTML页面在应用程序组装时与Web组件打包在一起。就像客户层一样,Web层可能包括一个JavaBeans类来管理用户输入,并将输入发送到在业务层中运行的EnterpriseBeans类来处理。(3)业务层作为解决或满足某个特定业务领域(比如银行、零售或金融业)的需要的逻辑的业务代码由运行在业务层的EnterpriseBeans来执行。一个EnterpriseBean从客户程序处接收数据,对数据进行处理(如果需要),再将数据发送到企业信息系统层存储。一个EnterpriseBean还从存储中检索数据,并将数据送回客户程序。运行在业务层的EnterpriseBeans依赖于容器来为诸如事务、生命期、状态管理、多线程及资源存储池提供通常都非常复杂的系统级代码。业务层经常被称作EnterpriseJavaBeans(EJB)层。J2EE框架业务层和Web层一起构成了3层J2EE应用的中间层,而其它两层是客户层和企业信息系统层。(4)企业信息系统层企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划(ERP)、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论