| |
|
|
企业级Java应用的新趋势--EJB
|
|
|
|
| |
一、EJB在发展中产生
企业级应用被广泛采用,企业级应用技术在不断发展,企业级应用模式更在不断变化。归纳起来,主要有以下几种发展趋势。
1.从传统的C/S模式向三层、多层分布式应用模式转变。
2.对象、组件技术的不断发展。
3.目录服务功能增强。
4.大量采用中间件技术。
根据企业级应用的发展趋势,Sun提出了一个JavaPlatform for the Enterprise (JPE)解决方案,为企业级应用的发展提供了坚实的基础。在JPE中,EnterpriseJ
avaBeans(EJB)是其核心技术,主要用于简化多层应用系统的开发,进行大量的事 务处理。
EJB技术的提出,为企业级应用提供了一个安全、可靠及灵活的解决方案。EJ BSpecification1.0刚一提出,就得到了包括IBM、BEA、Weblogic、Informix、Or
acle等众多厂商的支持,可以说,EJB将是企业级应用的一条"未来之路"。
二、EJB组件模型
EJB组件模型为中间层应用开发提供了一致的基于组件的应用模型。遵循Java 的"Writeonce,runanywhere",平台独立性,是一种开放的应用组件模型。而目前
中间层解决方案一般都是基于专有应用平台,同时,需要有大量的代码开发工作, 跨平台应用困难。EJB对这些设施进行了标准化,提供了一个组件运行环境EJBSer
ver。用户不需要自己去编程,EJBServer可以负责处理远过程调用、事务处理、安 全性操作、线程和状态管理,简化了应用开发过程。
EJB组件模型增强了基于客户端组件的JavaBeans组件模型,适用于整个企业分 布式大规模应用。
1.JavaBeans组件模型特点
JavaBeans组件模型主要是面向客户端的软件,它支持可移植和可重用的Java 组件的开发。JavaBeans工作于任何Java应用开发工具中。Java开发者可以利用Ja
va开发工具开发JavaClass、JavaApplets及Java应用程序。可以认为,JavaBeans 是一个特殊的JavaClass,可以被加入到应用开发工程中,并被Java开发工具处理
使用。
在Java开发工具中,开发者可以通过属性表或通过定制的方法来定制JavaBea ns。多个JavaBeans可以组合在一起构成JavaApplets或Java应用程序,或建立新的
JavaBeans。JavaBeans总是在运行时实例化,并通过.jar文件来初始化其状态。它 支持可视化及非可视化的组件模型。
2.EJB组件模型特点
EJB是Server端的JavaBeans组件模型。它是一种特殊的、非可视化的JavaBeans,运行在服务器上。EJB同普通的JavaBeans一样,可以和其他Beans一起建立新
的Java应用。EJBClass可以通过其属性表及定制方法来进行处理和定制。
EJB组件模型包括EJBServer、EJBContainer、EJBObject以及诸多相关特性。
EJBServer提供EJB应用的运行环境。它负责管理和协调应用程序资源的分配。 TPMonitor产品、CORBA运行系统、WebServer、数据库系统和应用服务器可作为EJ
BServer。EJBServer必须提供EJBContainer。
EJBContainer用于管理EJB对象的类。它负责对象的生命周期的管理,实现对 象的安全性,协调分布式事务处理,并负责对象的上下文切换。EJBContainer还可
以管理对象的状态。某些情况下,对象数据是短暂的,只存在于特定的方法调用过 程中,另一些情况下,对象数据是长久的,多个访问都要调用此对象数据。EJB同
时支持短暂对象数据及长久对象数据。EJB对象被赋予EJBContainer。当其被使用 时,您可以通过修改其环境属性来定制Beans运行状态特性。比如,开发者可以使
用EJBContainer用户接口提供的工具来修改Beans的事务模式及安全属性。EJB对象 一经使用,EJBContainer负责管理EJB对象生命周期、EJB对象安全特性和协调事务
处理。
EJB规范提供一种机制,可以通过在运行时设置相应的属性值来定义每一个EJ B对象的运行状态。每一个EJB对象都要提供Deploymentdescriptor,包括Entityd
escriptor或Sessiondescriptor。
Deploymentdescriptorobject用于设置EJB对象的运行状态。这些设置值告诉 EJBContainer如何去管理和控制EJB对象,它们可以在应用程序组装或应用程序使
用时设置。
典型设置属性包括:生命周期、持久性、事务属性和安全特性。
三、短暂和长久EJB
EJBspecification规定有两种类型EJB:SessionEJB和EntityEJB。SessionEJ B是短暂的对象,运行在服务器端,并执行一些应用逻辑处理。它由客户端应用程
序建立,并仅被该应用所使用,其数据需要自己来管理。
通常它要完成数据库访问或数据计算等工作。SessionEJB支持事务属性,但是 ,当系统停机后,SessionEJB不会再被恢复。EntityEJB是持久的对象,可以被其
他对象调用。与SessionEJB不同,EntityEJB必须在建立时制定一个惟一的标识, 并提供相应的机制允许客户应用程序根据EntityEJB标识来定位Beans实例。多个用
户可以并发访问EntityEJB,事务间的协调由Container来完成。EntityEJB支持事 务处理,当系统停机时,也可恢复。EJB规范中定义了两种处理EntityEJB的持久性
模型,即Beansmanaged及Containermanaged。Beansmanaged是由EJB自己来管理持 久性。它需要EJB开发者来编写数据库或应用程序的处理逻辑,并加入到类的ejbc
reate()、ejbremove()、ejbfind()、ejbload()和ejbstore()等方法中。Contain ermanaged是将EJB持久性管理交给Container来完成。开发者一般要在EJB的Deplo
ymentdescriptor中的ContainerManagedFields属性中指定EJB实例持久性域。使用 Containermanaged,无需用户知道Entity存储的数据源,也不需要用户参与复杂、
烦琐的编码工作。
EntityEJB在EJB1.0规范中是可选的。同时,Containermanaged只支持简单数 据类型。这些限制在EJB下一个版本中会得以解决。
四、EJBContainer的作用
EJBContainer在EJB环境下主要起到如下作用:
1.EJBContainer负责提供协调管理、事务处理和RMI等功能。原则上讲,EJBS erver和EJBContainer可以由不同厂商提供,但目前,EJBServer和EJBContainer由
一家厂商提供。
2.Container建立Context,负责切换协调不同EJB对象。
3.EJBContainer可以有不同类型,如TPMonitor、DBMS、WebServer等。厂商宣 布支持EJB,一般是提供不同应用的Container系统。一般而言,Container主要由
以下部分组成:
客户应用程序通常不和EJB直接打交道。它们要通过Container提供的接口,该 接口提供了EJB的客户视角。
(1)一类接口称为Homeinterface。Homeinterface允许客户建立或删除EJB。对 EntityEJB来说,Homeinterface还提供定位特定EJB实例的功能。
当用户请求EJB服务时,它首先要通过JNDI来定位对象的Homeinterface,EJB 类及其Container对用户来说是透明的。Homeinterface必须提供建立EJB对象的方
法。一旦用户找到所需的EJB类后,它就可以通过调用Homeinterface中的生成方法 建立EJB对象。
(2)EJB对象是Container提供的EJB类的一个实例,它用来实现EJB的远调用接 口。用户总是通过调用EJB远调用方法来执行EJB服务。通常是使用JRMI。用户调用
EJB对象时,由EJBContainer接受请求,并将任务交给EJB对象。这种机制保证为用 户及EJB提供透明的状态管理、事务控制及安全性服务。
五、EJB事务特性
EJB中存在6种事务特性:TX-NOT-SUPPORTED此属性指定EJB不支持事务特性。 当用户应用程序在一个事务中调用EJB时,事务处理将被挂起,直到EJB处理结束。
TX-REQUIRES此属性指定EJB必须在事务处理环境下执行。如果用户应用程序使 用事务处理环境,则EJB方法调用用户事务环境,如果用户应用程序未使用事务处
理环境,则EJB方法调用自动建立一个新的事务处理。
TX-SUPPORT此属性指定EJB可以在事务或非事务处理中运行。如果调用EJB的客 户程序支持事务,则EJB方法将使用用户的事务环境。如果客户程序未支持事务,
则EJB将支持事务处理。
TX-REQUIRES-NEW此属性指定EJB方法调用必须使用一个新事务。如果用户程序 正在使用事务,则必须要将它挂起,等到EJB方法调用完成,再继续原事务。
TX-MANDATORY此属性指定EJB总是在用户应用程序事务中运行。如果用户应用 程序未支持事务,则事务处理服务器将发出TransactionRequired例外命令,同时
请求失败。
TX-BEAN-MANAGED此属性要求EJB自己来管理其事务控制。客户程序通过直接调 用事务处理接口来建立事务处理特性。
六、同CORBA的映射
CORBA是目前分布式对象处理的事实工业标准,大部分厂商都宣布支持CORBA标 准。同样,Sun在制订EJB规范时,也考虑到CORBA应用对EJB的支持,推出了EJB同
CORBA互相映射的方法。
此规范主要用于基于CORBA对象模型的EJB组件模型。规范主要规定如下:
1.EJB中JavaRMI远程调用接口到基于IIOP协议的CORBAIDL的映射
2.CORBACOS命名规则到EJB的EJBHome命名规则的映射
3.EJB事务处理到OMGOTS事务处理的映射
4.EJB安全性到CORBA安全性的映射
采用此规范后,任何CORBA客户端(采用任何CORBA支持的语言程序)均可以访问 基于CORBA的EJB。客户应用程序可以在同一个事务中混合调用CORBA及EJB对象。一
个事务可以跨越位于不同厂商提供的基于CORBA的EJBServer中的EJB对象。其中, CORBA客户端包括两种类型:EJB/CORBA客户端和CORBA客户端。
EJB-to-CORBA映射规范,使用户已有的CORBA应用支持EJB应用。
目前,已有一些厂商宣布支持该规范。例如,Inprise决定将对EJB应用的支持 加入其Visibroker产品系列。Inprise的Visibroker主要是面向CORBA应用。EJB-t
o-CORBA映射规范是EJB规范的重要组成部分。
七、EJB的发展方向
Sun公布的EJB1.0规范是EJB规范的第一个版本,EJB还会进一步的完善与发展 。下面是EJB的一些发展方向:
1.Javasoft宣布了EJB1.0Specification。EJB1.0只规定必须支持SessionEJB 。EJB2.0中,EntityEJB规定也必须支持。
2.目前,很多厂商都宣布支持EJB。同时提供了对EntityEJB的支持。如IBM的 SanFranciscoProject。
3.目前,进程管理、线程池、并发控制和资源管理等功能未包含在EJB规范中 。因此,对这些服务的支持程序,也就决定了不同厂商产品的差别与不同。大多数
厂商都是将自己的产品移植到EJBContainer中。
4.EJB的发展方向是要支持多种环境,包括:
(1)TPMonitor,包括IBMTXSeries(CICS&Encina),BEATuxedo
(2)ComponetTransactionServer,如SybaseJaguarCTS、MicrosoftTransactio
nServer
(3)CORBAPlatform,如BorlandVisiBroker、IonaOrbix
(4)数据库管理系统,如Informix、Oracle、Sybase
(5)WebServer,如JavaWebServer、NetscapeEnterpriseServer、OracleAppli cationServer
EJB1.0规范的提出,使EJB应用成为现实。EJB是一个组件体系结构,用于开发 和部署面向对象的分布式企业级Java应用。用EJB编写的应用可扩展性好,支持事
务处理及多用户环境下的安全性。EJB应用程序编写一次,可在任何支持EJB的服务 器平台上运行。它提供了比以往更好的集成性与互操作性,因此,对于高性能、高可扩展性、高安全性的应用,通过使用EJB,可以为用户提供更加有效的服务。
|
|
|
|
|
|
| |
 |
|
|
|
|
|
|
|