将企业 Bean 代码从 V1.1 迁移至 V2.1

虽然与 EJB 2.1 兼容的模块可以包含 V1.x 和 V2.1 Bean 的混合,但是仅可以在与 EJB 2.1 兼容的模块中组装与 Enterprise JavaBeans (EJB) V2.1 兼容的 Bean。

关于此任务

EJB V2.1 规范要求 EJB 容器启动 findBy 方法查询前,加入当前事务列表中的所有企业 Bean 的状态与持久性存储同步。(此操作是为了对当前数据执行查询。)如果 V1.1 Bean 重新组装到与 EJB 2.1 兼容的模块中,那么 EJB 容器会同步 V1.1 Bean 的状态和 V2.1 Bean 的状态。结果,您可注意到应用程序行为中的一些更改,即使 V1.1 Bean 的应用程序代码还未更改。

下列信息一般应用到当前遵从 EJB 规范 V1.1 的任何企业 Bean。有关迁移使用 Rational Application Developer 工具生成的 Bean 的代码的更多信息,请参阅该产品的文档。

过程

  1. 在带有容器管理的持久性 (CMP) V1.x 的 Bean 中,使用抽象 get 和 set 方法替代每个 CMP 字段。 为此,您必须使每个 Bean 类抽象化。
  2. 在带有 CMP V1.x 的 Bean 中,把所有出现的 this.field = value 更改为 setField(value)
  3. 在每个 CMP Bean 中,为主键创建抽象 get 和 set 方法。
  4. 在带有 CMP V1.x 的 Bean 中,为每个 finder 方法创建 EJB 查询语言语句。
    注: EJB 查询语言在 Application Developer V5 中有以下限制:
    • EJB 查询语言查询从带有构成关系的键的 Bean 到看似无效并在部署时导致错误的其他 Bean。
    • IBM EJB 查询语言支持用各种方法扩展 EJB 2.1 规范,包括放宽一些限制以及添加更多 DB2 功能的支持等。如果要考虑跨各种供应商数据库或 EJB 部署工具的便携性,那么在编写所有 EJB 查询语言查询时要注意严格遵循 EJB 2.1 规范的第 11 章中所述的指示信息。
  5. 在带有 CMP V1.x 的 Bean 的 finder 方法中,返回 java.util.Collection,而不是 java.util.Enumeration。
  6. 更新非应用程序异常的处理。
    • 要报告非应用程序异常,抛出 javax.ejb.EJBException,而不是抛出 java.rmi.RemoteException。
    • 按需修改回滚行为:在 EJB V1.1 和 2.1 中,Bean 实例抛出的所有非应用程序异常导致运行实例的事务回滚;废弃实例。在 EJB 1.0 中,如果抛出 java.rmi.RemoteException,容器不回滚事务,或废弃实例。
  7. 更新回滚行为,作为应用程序异常的结果。
    • 在 EJB V1.1 和 2.1 中,应用程序异常不会导致 EJB 容器自动回滚事务。
    • 在 EJB V1.1 中,仅当实例在其 EJBContext 对象上调用 setRollbackOnly() 时,容器才执行回滚。
    • 在 EJB V1.0 中,当通过容器启动的事务边界传递应用程序异常时,要求容器回滚事务。
  8. 将任何特定于应用程序的缺省值的 CMP 设置更新到 ejbCreate 中(不使用全局变量,因为 EJB 1.1 容器在调用 ejbCreate 前将所有的字段设置为一般缺省值,它将覆盖任何先前特定于应用程序的缺省值)。 此方法也用于 EJB 1.0 CMP。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_migr20
文件名:tejb_migr20.html