扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
企业JavaBeansTM技术介绍
今天, 对企业开发人员来讲, 难以编写分布式商务应用程序和其它任何较大的应用程序是他们所面临着一个共同问题。如果一个应用程序是分布式的,或在网络中以多重形式出现,那它必然应该是一个综合化的产物。如果一个应用程序必须可靠而有保证地执行它的商务逻辑, 那么其综合化程度又必然需要进一步提高。
企业所面临的另一个复杂问题是企业自身的基本操作环境也是多种多样的。另外, 企业希望能以尽可能快的速度建立自己的应用程序, 而不是被限制在单一的平台上。理想的情况是, 企业开发人员只编写一次应用程序, 而该程序即可在任意平台上运行。企业JavaBeansTM技术就是希望提供这种能力。
企业JavaBeans(EJB)的组件结构是以作为可重复使用的服务器端组件而设计的,它使企业能够建立可升级、安全可靠、可运行于多重平台且以商务为重点的应用程序。
什么是企业JavaBeans技术?
EJB(企业JavaBeans)结构是JavaTM平台上的服务器端组件模型。设计EJB结构的目的是, 通过使企业开发人员将注意力只集中于编写商务逻辑, 从而解决上面所提出的问题。EJB技术取消了编写"全程(plumbing)" 码的要求。例如, 企业开发人员不再需要编写那些处理事务行为、安全、连接共享或线程的代码, 因为EJB体系结构将这些任务委托给服务器厂商完成了。
对用户和这一技术的实现者来说, 将会获得如下收益:
生产效率: 使用这一技术, 企业开发人员将会进一步提高生产效率。他们不仅能够获得在Java平台上的开发成果, 而且能够将注意力集中于商务逻辑, 从而使效率倍增。
业内支持: 试图建立EJB系统的客户会获得一系列可供选择的解决方案。企业JavaBeans技术已经被多达25个公司所接受、支持和应用。
投资保护: 企业JavaBeans技术建立在企业现存系统之上。事实上, 许多EJB产品都将建立在已有的企业系统之上。今天企业所使用的系统, 明天将会运行企业JavaBeans组件。
结构独立: 企业JavaBeans技术将开发人员和底层中间件相隔离; 开发人员看到的仅仅是Java平台。 这一点除下面将要谈到的交叉平台的好处外, 还将使得EJB服务器厂商在不干扰用户的EJB应用程序的前提下, 有机会改进中间件层。
服务器端仅写一次, 即可随处运行(Server-Side Write Once, Run AnywhereTM): 通过对Java平台的支持, EJB技术将"仅写一次, 随处运行"的概念提高到了一个新的水平。它可以保证一个EJB应用程序可运行于任何服务器, 只要这个服务器能够真正提供企业JavaBeans APIs。
EJB技术的设计目标
服务器端环境和其所需工具极大地影响了EJB技术的设计目标。 一个主要的设计目标是减少(尽可能地)建立分布式应用程序的过程;它是通过将一般需要手工编码的特性转化为企业Beans简单声明属性来实现的, 这些声明属性使开发效率大大提高, 因为某些行为, 如安全和事务不是以代码形式, 而是通过Bean自身的"标记" 来设定的,。这种设计特性也是EJB技术使开发人员将注意力集中于编写商务逻辑的另一条途径。
EJB规范创建了一种底层结构, 它关系到系统级编程, 如事务、安全、线程、命名、对象生命周期、资源共享、远程访问和persistence等等;它同时也简化了访问现存应用程序的过程, 并为工具的创建和使用提供了统一的应用程序开发模型。
企业应用程序模型
除提供底层结构以外, EJB技术还涉及到另外一个问题。有两种建立企业应用程序的基本模型。在第一个模型中, 客户是从作为一个应用程序的对象开始对话期的; 该对象可代表客户执行一项工作, 有可能包括多重数据库事务;在第二个模型中, 客户访问一个对象, 这个对象代表了数据库中的一个实体。EJB的设计适用性很广, 它包括了这两种模型: Session Beans包括了第一种模型。一个Session Bean是一个对象, 它代表了与客户的一个瞬时对话, 并为客户执行数据库读写操作;这些数据库的访问是在一个事务处理过程中实现的。一个Session Bean的字段包括对话的状态且是瞬时的,之所以如此的意义在于, 一旦服务器或客户崩溃, Session Beans就不存在了。该模型典型地用于数据库编程语言, 如PL/SQL。
Entity Beans包括了第二种模型。一个Entity Bean与作用于一个数据库中的数据的方法一起代表了这些数据。在关系型数据库中, 例如一个雇员信息表格, 表中的每一行都有一个Bean。Entity Beans是事务型的且长寿, 只要数据库中的数据存在, 则Entity Bean就存在。该模型大多数典型地应用于面向对象的数据库中。
请注意在EJB规范中, 支持Session Beans是强制性的, 而支持Entity Beans在目前是选择性的; 但在EJB规范2.0版中, 它将成为强制性的。
EJB的结构
上图显示了EJB技术的体系结构。EJB规范支持任何类型的客户, 因为该规范不强制要求任何远程对象的"网线"协议;这就意味着一个服务器可支持多种协议, 如RMI、IIOP(CORBA)和DCOM等;它也说明, 一个EJB服务器的客户程序不一定要用Java语言来编写。
EJB服务器实际是各种支持EJB安装的服务的集合, 这些服务包括分布式事务管理、分布式对象管理和对这些对象的分布式调用以及低层次系统服务。简而言之, EJB服务器管理那些支持EJB组件所需要的资源。一个EJB服务器提供商可提供一个容器的实现(详情见后), 他也可以为第三方厂商提供API以使其能嵌入附加EJB容器。EJB规范在服务器的设计和实现上给了开发人员以极大的自由。
EJB服务器正象是EJB组件的一个家, 而容器则是Bean生活的地方, 就象是一个记录"生活"在数据库中一样。它提供了一个可升级、安全和事务性的环境, 在该环境中Bean可以操作。处理对象生命周期(包括创建和销毁一个对象)的正是容器。容器也负责Bean的状态管理。
容器对客户是透明的, 容器上没有客户API。当一个Bean被安装在容器中时, 该容器提供两种实现: Bean的EJBHome接口的实现(详情见后)和Bean的远程接口的实现。容器也负责保证在JavaJNDI 中能够获得Bean的EJBHome接口。
要构造一个Bean, 你必须首先实现商务方法。 例如, 如果你正在编写一个帐目检查Bean, 你可能要实现一个"借方"方法用来作为接口的一部分;你还必须实现两种类型的EJB接口之一 --Session Bean或Entity Bean;这些接口包括了诸如与工作设置管理相关的方法并且不暴露给客户。
当把一个Bean安装在服务器上时, 远程接口(在CORBA中通常称作skeleton)则被自动生成。远程接口的实现被称为EJBObject, 它只将程序员指定的远程接口暴露出来。尽管企业Bean类包含了同样的方法, 但它并不实现远程界面。 EJBObject的作用就象是一个代理人, 它截取远程对象调用并调用企业Bean实例中的适当的方法。
一个EJB容器可实现安装在该容器中的每个企业Bean的EJBHome接口, 它允许Bean的创建和清除, 并且可查询有关Bean的信息或"元数据"。该容器使客户通过JNDI便可获得EJBHome接口。对Entity Beans来说, EJBHome接口也包含了一个或多个"finder"方法, 使客户用一个主键即可查询有关Bean的信息。
EJB的特性
应用程序开发人员所面临的最复杂的问题之一是编写分布式事务应用程序。EJB技术的一个主要特性就是它对分布式事务的支持;EJB技术使你可编写访问跨越多个EJB服务器的多重分布式数据库的应用程序。为使这一工作变得简单, EJB规范允许你在部署阶段就以声明的形式指出事务行为, 而管理事务行为的负担被转移给服务器, 特别是转移给容器和EJB服务器提供者。如果Bean的开发人员有更高的事务需求, 则可使Bean通过程序来管理事务界限。
安全是所有企业产品的需求。EJB组件模型充分发挥了核心Java平台安全模型的作用, 从而给予你两种设置安全的方法。第一, 你可以在Bean的EJB-JAR文件中设置安全描述符; 第二, 你可以使用java.security包实现对安全的程序化管理。
EJB的另一个设计特性是独立于对象的通信协议。这有许多好处, 首先, 它可以使编写客户端应用程序的程序员免于选择通信协议; 其次, 它允许EJB服务器的建立者实现对其用户最为重要的协议。例如, ORB提供者可能仅仅实现CORBA协议, 而UNIX提供者则可能实现RMI和CORBA协议。但无论如何, 所用协议对Bean的开发人员是透明的, 他仅仅针对Java平台来编写程序。
Java平台为EJB服务器提供了许多继承性的优点。最明显的一点是, 一旦基于Bean的应用程序编成后, 它便可以在任何可运行企业Bean服务器的地方运行;其连带的优点是升级性。如果你目前的EJB应用程序在性能上出了问题, 你可以将应用程序的主要部分移植到另一个更高性能的平台的EJB服务器上。
专用容器可大大简化对现存企业应用程序的访问。这样的容器可使现存非Java语言应用程序作为Bean出现, 它使Java开发人员可在不了解现存系统和应用程序特点的情况下访问那些应用程序。
开发人员的角色分配
EJB技术将开发人员分成固有的五种角色: 服务器提供者、 容器提供者、 企业Beans提供者、 应用程序装配者和部署者。对上述五种角色描述如下:
服务器提供者是分布式事务管理方面的专家, 主要负责处理分布式对象和低层次系统服务。数据库和TP监控器厂商可典型地充当该角色。
容器提供者一般是系统编程方面的专家, 由于容器有能力将EJB环境与现存应用程序(如SAP R/3和CICS)桥接起来, 因而这些专家有可能具备某一应用领域的经验。由于容器为Bean提供了安全、可升级和事务性的环境, 因而容器提供者需具备这些领域的经验。数据库和事务服务器厂商也适合这一角色, 并可提供标准容器。
企业Beans提供者为EJB应用程序提供"积木", 他们是典型的以Bean的形式编写商务逻辑的域专家,而他们不一定是数据库或系统编程方面的专家。他们生成包括所有组件在内的EJB JAR文件。对象库厂商适合这一角色。
应用程序装配者是域专家, 他们的工作是用第三方Beans建立应用程序, 他们也有可能建立客户端GUI。典型的应用程序装配者通常是程序员,他们建立应用程序来可访问已部署的组件。
部署者通常熟悉企业的操作环境, 他们利用应用程序包并设置部分或全部应用程序的安全和事务描述符。部署者也有可能使用工具来修正Bean的商务逻辑。 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者