Victor Chan,Jin Li 和 Rob Stevenson
IBM 多伦多实验室
内容:
挑战
迎接挑战
典型方案
小结
作者简介
本文最初出现在 IBM.d_m@il: Developer Directions 的 6/7 月版中。每期 Developer Directions 的英文和法文版本都有 PDF 格式供您下载;德文版和意大利语版正在筹划中。
企业级 bean 是符合 Sun Microsystem 的 Enterprise JavaBeans (EJB) 组件模型的服务器端非可视化软件组件。这些企业级 bean 使应用程序编程人员能够开发与平台无关的、面向事务的分布式应用程序,这种应用程序可在众多厂商的服务器上运行。
EJB 模型将应用程序特定的业务逻辑和系统功能明确分离开来。作为负责开发企业级 bean 的应用程序编程人员,您就可以集中精力编写应用程序的业务逻辑。您可将对复杂系统功能(如事务管理、持久性、安全性和工作量管理)的处理留给服务器供应商。
尽管企业级 bean 减轻了应用程序编程人员处理系统功能的负担,但这些 bean 相当复杂,开发它们并不是一项简单的工作。以下几个部分将具体分析企业级 bean 的开发,并会指出如何通过利用专用于企业级 bean 开发的可视化编程工具将这种复杂性降到最低。
开发企业级 bean 面临的挑战
开发企业级 bean 面临的挑战在某种程度上源于两种企业级 bean(会话 bean 和实体 bean)背后的复杂性。
会话 bean 和实体 bean 在几个方面很相似:它们都必须整合到应用程序中,必须部署到符合 EJB 规范的容器中,并且必须在符合 EJB 规范的服务器上运行。但是,这通常是会话 bean 和实体 bean 仅有的相似之处。
会话 bean 用来处理业务逻辑,它们即可以是有状态的,也可以是无状态的。有状态的会话 bean 的生存期是单个客户机/服务器会话。无状态的会话 bean 由它们的容器集中控制,用来处理多个客户机的多个请求。
比较而言,实体 bean 都有个体身份,通常用于应用程序需要处理数据持久性和数据建模的场合。实体 bean 即可是容器管理持久性的 (CMP) 实体 bean,也可是 bean 管理持久性的 (BMP) 实体 bean。CMP 实体 bean 的数据持久性是由容器管理的。但是,BMP 实体 bean 的数据持久性是由 bean 自己管理的。
开发企业级 bean 要完成四项主要的任务:
创建企业级 bean
部署企业级 bean
测试企业级 bean
包装企业级 bean
要创建企业级 bean,您必须遵循 Sun 的 EJB 规范所定义的一组接口。例如,除了定义一个企业级 bean 类之外,您还必须为每个企业级 bean 定义远程接口和本地接口。远程接口定义了企业 bean 业务方法的客户视图,而本地接口定义企业级 bean 对象生存周期的客户视图,生存周期包括诸如企业级 bean 的创建和删除这类事件。
您还必须确保在企业级 bean 的接口和类中定义的方法保持一致。如果创建的是实体 bean,则您必须定义它的持久性域,并将这些持久性域映射到持久数据存储,如关系数据库。
一旦创建了企业级 bean,就必须针对特定的 bean 容器部署它,即生成本地接口和远程接口的实现类。完成部署之后,还需要测试 bean 的远程方法和本地方法。最后,一旦完成测试,您就可以将 bean 打包,以便将其安装在生产服务器上。
关于部署企业级 bean 的四项主要任务的这个简介应该使您对基层复杂性有所了解。毫无疑问,您一定希望获得尽可能多的帮助,以快速有效地开发企业级 bean。请继续阅读后文!
用 EJB 开发环境迎接挑战
幸运的是,有一些专门用来开发企业级 bean 的可视化工具,它们可以大大降低开发的复杂性。例如,IBM VisualAge for Java EJB Development Environment 就是能够满足(甚至可能超出)您的开发需求的一套工具。
EJB Development Environment 是 VisualAge for Java Version 2.0 Enterprise Update 的一部分,您可从 VisualAge Developer Domain 站点下载这个更新。
EJB Development Environment 由一套用来简化企业级 bean 的创建、部署、测试和打包这四项主要任务的工具组成。这些工具与 VisualAge for Java 集成开发环境紧密集成,其中企业级 bean 是作为一级对象管理的。EJB Development Environment 的部分重要特性:
用于创建、引入或导出企业级 bean 的智能向导 (SmartGuide)
自动创建本地接口和远程接口
用于添加、定义和映射持久数据域的对话框
用于设置部署描述符和控制描述符的对话框
用于生成和测试实现类的集成部署工具
允许您为每个企业级 bean 创建不同版本的小组支持
为企业级 bean 的“无代码单元测试自动生成测试客户机,这样就可以确保对企业级 bean 的测试就像对本地 Java 程序的测试那样简单
集成的服务器运行时环境,这样,您就可以首先在符合 EJB 规范的服务器上对企业级 bean 进行测试,然后再将它们部署到生产服务器上的目标容器中
在 EJB Development Environment 中创建的任何企业级 bean 都可部署到容器中,并可在实现了 Sun 的 EJB 规范的任何服务器上运行。支持该规范的服务器都要针对使用企业级 bean 的 Web 应用程序进行优化。例如,IBM WebSphere Application Server 为基于 Java 的应用程序和其他开放标准 -- 如 HTTP、HTML、JSP、JNDI、JDBC、IIOP 和 Java servlet -- 提供了一个完备的运行时环境。
如果您打算将企业级 bean 部署到 WebSphere 服务器上,您将发现 EJB Development Environment 是您开发企业级 bean 的最佳选择。EJB Development Environment 利用已集成到 VisualAge for Java 集成开发环境中的重要 WebSphere 运行时组件。VisualAge for Java 还提供一个 WebSphere 测试环境,您可以在其中针对一种 WebSphere 服务器实现运行和测试您的企业级 bean。当然,您也可利用此集成开发环境的完备调试功能调试您的企业级 bean。一旦您的 bean 在 EJB Development Environment 中经历了这些步骤,您就可以将它们直接安装到 WebSphere 生产服务器环境中。
EJB 开发环境的一个典型方案
EJB Development Environment 与 VisualAge for Java 的其他开发环境使用相同的通用设计范例。EJB Development Environment 的所有工具都可在 VisualAge for Java Workbench 中的 EJBs 页找到.
EJBs 页是 EJB Development Environment 的核心。这是您定义用来容纳企业级 bean 的 EJB 组的地方。这也是您进行企业级 bean 的所有开发活动(如创建、部署、测试和打包 bean)的地方。
以下步骤展示了当使用 EJB Development Environment 开发企业级 bean 时可能遵循的典型开发方案:
添加一个或多个 EJB 组来组织您的企业级 bean。您可使用 SmartGuide 添加 EJB 组,既可从头开始创建一个新的 EJB 组,也可从 VisualAge for Java 库中检索一个现有的 EJB 组。
将企业级 bean 置入您的 EJB 组中。要将企业级 bean 添加到一个 EJB 组中,您既可以从一个 EJB JAR 文件中导入一个现有的 bean,也可以使用 SmartGuide(见图 2)从头开始创建一个新的企业级 bean:
将本地方法和远程(业务)方法添加到 bean 类中,然后将它们提升为本地接口和远程接口。在添加企业级 bean 之后,任何时候只需选择菜单即可添加和提升本地方法和远程方法。但是,必须在生成部署类之前执行提升。
添加、定义和映射所需的任何 CMP 域。如果您处理的是 CMP 实体 bean,则您可以结合使用对话框和菜单选择,以便快速地添加、定义和映射 CMP 域。通常,您可接以下步骤来处理您的 CMP 域需求:
在企业级 bean 中添加所需的域
为 CMP 实体 bean 定义 CMP 域和主键域
将 CMP 域映射到现有的数据库表,既可从现有数据库表导入方案,并将 CMP 域映射到此方案,也可创建一个新方案,然后使用这个新方案创建一个新表,最后将 CMP 域映射到这个新表
设置部署描述符和控制描述符。在添加企业级 bean 之后,随时都可以使用 Properties 对话框很容易地设置或更改部署描述符和控制描述符。但是,这些描述符必须在测试 bean 之前设置。
生成 EJB 部署类。一旦创建了企业级 bean 并添加了应用程序特定的逻辑,您就可以生成企业级 bean 在 VisualAge for Java 中的 WebSphere 服务器实现中运行所需的部署类。
测试企业级 bean。测试企业级 bean 实际上包括许多步骤:
创建服务器配置(将企业级 bean 分配给服务器容器)。
启动 DB2 服务器(如果测试的是实体 bean)
创建所需的任何数据库表
启动 Name Service 服务器和 WebSphere 测试服务器的一个实例
生成测试客户机
运行生成的测试客户机,然后测试企业级 bean 的本地接口和远程接口中的每个方法。
将企业级 bean 导出到以下的一个或多个 JAR 文件中:
EJB JAR 文件(如果您要将这些 bean 部署到非 WebSphere 容器上)
EJS JAR 文件(如果您要将部署后的 bean 安装到 WebSphere 服务器上)
客户端 JAR 文件(如果您希望创建客户端应用程序)
小结
通过明确地将开发应用程序逻辑的任务与诸如事务管理和安全性这类系统功能相关的任务分离开来,Enterprise JavaBeans 组件模型使您能够将精力完全集中在编写应用程序的业务逻辑上。这使得 Enterprise JavaBeans 成为一项引人注目的技术,同时也说明了因特网编程领域最近的若干趋势,即通过各种方式结合企业级 bean 的使用。开发企业级 bean 并不是一项简单的任务,但可视化的工具(如VisualAge for Java EJB Development Environment 及其 WebSphere 测试环境)使您能够相当容易地快速创建、部署、测试和打包功能强大的企业级 bean。
作者简介
Victor Chan 是 IBM 多伦多实验室的高级开发分析师,现在正在 VisualAge for Java EJB Tooling 项目组工作。他已通过 IBM 的 Solution Architect for VisualAge for Java 认证,所关注的是企业级应用技术,如 EJB、CORBA 和 RMI。他是 MVS DCE/RPC 支持、各种 AS/400 通信适配器(如 X.21、X.25 和 ISDN)方面的技术主管。
Jin Li 是 IBM 多伦多实验室的软件设计师,现在正在 VisualAge for Java and WebSphere 解决方案项目组工作。在加盟 IBM 之前,他是一家软件公司的技术主管,该公司的业务是用 C++ 开发网络应用程序。在 IBM,他从事 C++、Java 和 Web 应用开发工具等方面的工作。他认为自己的最大成就是在 VisualAge for Java 易用性方面的贡献。
Rob Stevenson 是 IBM 多伦多实验室的的信息开发者,现在正在 VisualAge for Java 项目组工作。他曾是 IBM 许多项目(包括 SQL/DS、AS/400、DCE、DADT 和 VisualAge 电子商务)的技术文档编写者。目前他是 VisualAge for Java 的众多组件(包括 EJB 开发环境)的技术文档编写者 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
标签: