EJB 工具 - 发行说明

1.0 简介
2.0 受支持的软件和规范
3.0 已知问题
   3.1 刷新问题
   3.2 中间会合映射提示和限制
   3.3 “映射”编辑器中的拖放支持
   3.4 在 J2EE 透视图的“导航器”视图中删除表和模式
   3.5 1.1 CMP 实体 bean 的 optimistic 谓词
   3.6 继承提示和限制
   3.7 在开发时引用运行时 JAR 文件
   3.8 不要在多个表之间映射组合的类型
   3.9 删除 CMP 实体不会除去映射条目
   3.10 EJB QL 限制
   3.11 对 EJB 引用的验证不是自动进行的
   3.12 Java bean 和文件不支持阿拉伯语名称
   3.13 生成查询限制
   3.14 编辑本地 ejb 引用链接时产生问题
   3.15 在部署 EJB 2.0 关系之后任务列表中存在错误
   3.16 非空外键列缺少专用 ejbCreate
   3.17 使用继承时关于更改“源代码”页面 cmp 字段的限制
   3.18 更改 bean 类时未删除 EJB 部署代码
   3.19 未知主键不受支持
   3.20 更改带关系的 1.1 CMP 的主键类导致编译错误
   3.21 从 CVS 资源库更新时发生反映错误
   3.22 从大纲视图中删除 FIND 查询
   3.23 源代码页面和 EJB 继承
   3.24 对于继承结构中的多对多关系,未正确生成 EJB QL 查询
   3.25 FLOAT 数据类型的 SQL Server 映射问题
   3.26 Linux:在 WebSphere Application Server V4(单元测试环境)上对 DB2 运行 1.1 CMP bean 时产生连接问题
   3.27 在使用来自另一个项目的企业 bean 时,可能需要生成部署代码
   3.28 支持将企业 bean 映射至外键和主键
   3.29 对继承和辅助表映射的限制
   3.30 在将 bean 从 EJB 1.1 迁移至 EJB 2.0 时清除访问 bean
   3.31 在 WebSphere Application Server V4.0.6 上使用转换器和组合器部署 EJB 应用程序
   3.32 迁移包含二进制类的 EJB 项目
   3.33 视图的自底向上映射实现

1.0 简介

EJB 工具提供了可用来开发企业 bean 的专用环境。EJB 工具由下列实体组成:

本自述文件描述与 EJB 工具相关联的已知问题、限制与变通方法。

2.0 受支持的软件和规范

ejbdeploy 命令(EJB 部署工具)的 -dbvendor 选项现在支持下列值(对应受支持的数据库):

但不再支持下列值:

3.0 已知问题

3.1 刷新问题

如果工作台中的文件或资源似乎不同步或者发生了意外故障(例如,编辑器和视图不反映当前的部署描述符设置),则通过从“项目”菜单中先关闭项目然后再重新打开它就可以解决该问题。

3.2 中间会合映射提示和限制

  1. 按名称匹配 - 将只处理精确匹配。如果使用 WebSphere Application Server V3.5 兼容开关生成了模式或导入了 WebSphere Application Server V3.5 JAR,则表名后面将追加“tbl”,因此不能识别这些表名。
  2. 继承 - 如果子 bean 没有它们自己的字段,则不会映射它们。需要以手工方式将这些 bean 映射到父表。
  3. java.util.Date 在 1.1 CMP 字段映射中不受支持。
  4. 如果在映射中使用组合器,则生成映射、保存映射、关闭项目然后再重新打开该项目,然后进行部署。

3.3 “映射”编辑器中的拖放支持

仅在映射的“方向”上支持拖放。例如,如果映射是从“自顶向下”操作中创建的,则允许将企业 bean 拖动到数据库上。允许执行下列拖放操作:

  1. 将企业 bean 拖动到表上将在两者之间创建映射。
  2. 将 bean 拖动到数据库上将创建相应的表和列并将其映射至 bean 和属性。

3.4 在 J2EE 透视图的“导航器”视图中删除表和模式

如果需要删除表,请使用“数据”透视图或 J2EE 透视图的“J2EE 层次结构”视图,这样还可以除去所有从属链接。通常不应使用“导航器”或“J2EE 导航器”来删除 J2EE 资源,原因是将不会更新依赖项。

3.5 1.1 CMP 实体 bean 的 optimistic 谓词

在 WSAD 5.0 中,我们添加一些功能供 bean 开发者用来标识要用于要求过高的更新的属性。使用较早发行版的 WSAD 创建的 EJB JAR 文件不包含 1.1 CMP 实体 bean 的这一规范。但是,在使用 WSAD 5.1 进行部署时,将支持先前的语义。具体地说,如果没有属性列表,将使用所有可用的谓词。注意,2.0 CMP 实体 bean 在处理方式上是不同的。如果未选择任何属性作为谓词,则不会向要求过高的更新添加任何事项。

3.6 继承提示和限制

  1. 如果正在使用 Oracle 来作为数据库,则在根/叶继承结构中不要使用 BLOB 类型。
  2. MySQL、InstantDB、SQL92 和 SQL99 数据库不支持根/叶继承映射。它们不支持用于根/叶映射的复杂查询所必需的 SQL 集合运算符。要对这些数据库进行测试,将需要使用单个表映射。
  3. 在继承的 bean 中,不支持将 CMP 字段映射至非空列。只能从根 bean 的 CMP 字段上设置 Optimistic 谓词。

3.7 在开发时引用运行时 JAR 文件

如果需要对 Websphere Application Server 运行时可视的 JAR 文件(例如,rt.jar 和 xerces.jar 等等)进行编译,则作为一般规则,应该使用预定义的类路径变量为相应的运行时安装添加那些 JAR 文件。例如,应对 WebSphere Application Server V4.0 服务器 JAR 文件使用 WAS_PLUGINDIR 类路径变量,对 WebSphere Application Server V5.0 服务器 JAR 文件使用 WAS_50_PLUGINDIR 类路径变量。

3.8 不要在多个表之间映射组合的类型

“映射”编辑器允许您将组合的类型映射至不同表中的多个列。这将在生成部署代码时导致错误。确保组合类型映射中的所有列都属于同一个表。

3.9 删除 CMP 实体不会除去映射条目

当删除 CMP 实体时,此 bean 引用的相应映射不会除去它们的映射。当在删除实体之后对这些文件打开“映射”编辑器时,将除去映射。这是预期的行为。需要在生成部署代码之前打开“映射”编辑器。

3.10 EJB QL 限制

  1. 涉及具有一些键(由与其它企业 bean 的关系组成)的企业 bean 的 EJB QL 查询将表现为无效,并在部署时导致错误。这是一个已知的缺陷。
  2. IBM EJB QL 支持以各种方法扩展 EJB 2.0 规范,包括放宽某些限制和添加对更多 DB2 功能的支持等等。如果关心各种供应商数据库或 EJB 部署工具之间的可移植性,则应注意严格按照 EJB 2.0 规范中的第 11 章来编写所有 EJB QL 查询。

3.11 对 EJB 引用的验证不是自动进行的

更改这些引用时不会自动验证 EJB 本地引用、EJB 引用和资源引用。需要显式触发 EAR 验证器以便完成对这些引用的验证。

3.12 Java bean 和文件不支持阿拉伯语名称

不要对 Java 文件、Java bean 或访问 bean 使用阿拉伯语名称。在完成 MiniBank 示例时不要使用阿拉伯语名称。

3.13 生成查询限制

  1. 在 m:n 关系中预先装入将导致生成错误的 SQL。这是已知限制,将来可能会修正。
  2. 在自引用关系之间预先装入将导致生成错误的 SQL。
  3. 应避免父代企业 bean 与子代企业 bean 之间的关系处于未明确定义的同一继承层次结构中。

3.14 编辑本地 ejb 引用链接时产生问题

尝试在“EJB 部署描述符编辑器”的“引用”页面中使用“浏览”按钮编辑本地 ejb 引用的链接时,将不允许选择没有远程接口的目标 bean。变通方法是删除引用,然后重新创建它。

3.15 在部署 EJB 2.0 关系之后任务列表中存在错误

如果除去 EJB 2.0 关系,并重新生成部署代码,则您在任务列表中可能会看到无效错误。变通方法是在重新生成 bean 的部署代码之前首先除去它。

在添加了 EJB 2.0 关系并重新生成部署代码之后,偶尔还会在任务列表中看到无效错误。在这种情况下,只要再次重新生成部署代码就会除去错误。

3.16 非空外键列缺少专用 ejbCreate

如果对具有外键(它的各列不为空)的模式执行自底向上映射,则需要创建专用的 ejbCreate() 方法,并将角色的客户机接口类型添加到特征符中。自底向上映射不会自动执行此操作。

3.17 使用继承时关于更改“源代码”页面 cmp 字段的限制

为了支持 EJB 1.1 和 2.0 规范,需要为 EJB 继承结构中的每个子类型 bean 创建相匹配的 cmp 字段。如果您打开“EJB 部署描述符”编辑器,并修改“源代码”页面上这些字段的其中一个字段的名称,则不会对在子类型 bean 上创建的 cmp 字段进行相应的名称更改以满足 EJB 规范。变通方法是从 Bean 页面中使用“编辑”操作来更改名称。

3.18 更改 bean 类时未删除 EJB 部署代码

为了支持使用相同 Java 类的多个企业 bean,需要生成的部署代码才能使用命名技巧来使生成的部署类的名称唯一。这些名称派生自现有 bean 类、接口和键类。

如果生成了 bean 的部署代码且想要更改这些类的其中之一,则必须先删除该部署代码。如果不先删除部署代码,将不会除去旧的生成类,且这些类可能包含编译错误。如果在 Bean 页面上使用“编辑”操作来更改主键字段的类型,则也可能会发生这种情况。这将把键类自动更改为指定的类型或将创建新的复合键(如果主键字段不再有效)。

3.19 未知主键不受支持

EJB 工具当前不支持由 EJB 2.0 规范描述的“未知”主键定义。变通方法是定义特定的主键类。

3.20 更改带关系的 1.1 CMP 的主键类导致编译错误

为了支持 1.1 CMP 关系,创建了“链接”类。这些“链接”类需要 bean 主键类方面的知识。如果更改关系中涉及到的 1.1 CMP 的主键类,则生成的“链接”类将仍然包含对旧的主键类的引用。变通方法是手工更新“链接”类。应该只有两个地方需要更改。

3.21 从 CVS 资源库更新时发生反映错误

如果在从“CVS 资源库”更新 EJB 项目后“任务”显示错误(指出未反映类或接口),尝试重建 EJB 项目以排除错误。

错误可能类似如下:“CHKJ2802E:不能反映 ejb-class 类 test.SessionBean 或其超类型之一。检查类路径。”

3.22 从大纲视图中删除 FIND 查询

从“大纲”视图中删除包含本地接口的 2.0 CMP bean 的 FIND 查询时,无法从本地 home 接口中除去方法声明。变通方法是使用“EJB 部署描述符”编辑器的“查询”部分中的除去按钮。

3.23 源代码页面和 EJB 继承

如果您正在修改继承层次结构中的 CMP bean 的形状,则应该使用 EJB 部署描述符编辑器的设计页面(而不是“源代码”页面)。例如,如果想要添加或除去 CMP 字段或者更改 CMP bean 的主键字段,则这些字段由所有继承的 bean 的工具进行同步,以使这些 bean 与 EJB 规范保持一致。如果在“源代码”页面中更改源代码,则可能不会发生这样的同步。

3.24 对于继承结构中的多对多关系,未正确生成 EJB QL 查询

在此方案中,定义了 EJB 继承结构(根/叶或单个表继承),并且与此结构中的 EJB bean 存在“多对多”关系。在这种情况下,为这些 bean 定义的任何 EJB QL 查询都将具有不正确的 JOIN 语句。

以下是该结构的一个示例。

Customer <---- m:m ----> Account
                            |
                            |
                    ------inherit------
nbsp;                    
                        |         |
                   
Checking   Savings

3.25 FLOAT 数据类型的 SQL Server 映射问题

如果 CMP bean 已映射至 SQL Server 数据库,则需要将类型为浮点的字段映射至类型为 FLOAT 而不是 REAL 的列。

3.26 Linux:在 WebSphere Application Server V4(单元测试环境)上对 DB2 运行 1.1 CMP bean 时产生连接问题

在 WebSphere Application Server V4 的“单元测试环境”中对 DB2 运行 1.1 CMP bean 时可能会遇到连接问题。

变通方法:对数据库设置回送。

例如,如果数据库命名为 MyDB,主机名为 LHOST 且数据库服务端口号为 50000,则发出下列命令:

db2 catalog TCPIP node RHOST remote LHOST server 50000
db2 catalog database MyDB as MyDBAlias
db2 uncatalog db MyDB
db2 catalog database MyDBAlias as MyDB at node RHOST

要验证是否起作用,发出以下命令:db2 connect to MyDB user xxx
其中 xxx 是密码。

3.27 在使用来自另一个项目的企业 bean 时,可能需要生成部署代码

如果 EJB 项目中的企业 bean 使用另一个项目中的第二个企业 bean 的 home 或远程接口(例如,如果它有一个方法采用第二个企业 bean 的远程接口作为参数),在更改第二个企业 bean 的 home 或远程接口时需要生成两个项目的部署代码。

这将确保第二个企业 bean 的 RMIC 生成类在两个项目中都是最新的。

3.28 支持将企业 bean 映射至外键和主键

在将企业 bean 映射至数据库表时,有几个限制涉及外键和主键:

3.29 对继承和辅助表映射的限制

如果在使用映射继承的根叶方法或将辅助映射与多个表配合使用,应从数据库中除去外键约束以避免引用完整性排序问题(SQL 语句执行时顺序混乱)。

3.30 在将 bean 从 EJB 1.1 迁移至 EJB 2.0 时清除访问 bean

因为只具有本地客户机视图的企业 bean 不支持访问 bean,所以,如果将 bean 从 EJB 1.1 迁移至 EJB 2.0 并添加本地客户机视图和除去远程客户机视图,则可能需要执行一些手工清除。如果有数据类访问 bean,必须删除与该 bean 相关联的工厂类。如果具有复制助手访问 bean,需要删除该访问 bean 本身,删除工厂并清除该 bean 类中可能无效的任何方法。

3.31 在 WebSphere Application Server V4.0.6 上使用转换器和组合器部署 EJB 应用程序

如果在 EJB 至 RDB 映射中使用转换器和组合器且正在 WebSphere Application Server V4.0.6 上进行部署,则需要对 WebSphere Application Server 应用电子修订。WAS 电子修订将更新 vaprt.jar 文件。

WAS 电子修订为 PQ76109。

在 WebSphere Studio Application Developer V5.1 中,vaprt.jar 文件(包含缺省转换器和组合器)已更改。由于这些更改,需要更新 WebSphere Application Server V4.0.6 中的 vaprt.jar 文件。WAS 电子修订将使此 vaprt.jar 文件同步。

电子修订的备用变通方法是将 vaprt.jar 从 j2ee.core 插件运行时目录复制到 WAS 运行时库目录。若没有应用电子修订,则 WAS V4.0.6 中的下列转换器或组合器已过时:

VapBigDecimalToBooleanConverter VapBigDecimalToDoubleConverter VapBigDecimalToFloatConverter VapBigDecimalToIntegerConverter VapBigDecimalToLongConverter VapBigDecimalToShortConverter VapTimestampToUtilDateConverter NameComposer VapUSPhoneNumberComposer

3.32 迁移包含二进制类的 EJB 项目

在使用“迁移”向导迁移包含一个或多个二进制 Java 类(.class 文件)的 EJB 项目时, 迁移将成功迁移包含源 Java 文件(.java 文件)的项目组件,但它不会迁移二进制类。您需要手工修正所有错误。

3.33 视图的自底向上映射实现

当执行自底向上映射(生成基于现有表的企业 bean)时,缺省情况下向导不会为视图的底层表生成 bean。但是,由于需要为外键创建关系,所以向导会自动为具有任何外键或是由其它表的任何外键指向其主键的任何表创建 bean。如果清除不为视图的底层表创建 bean 复选框,则向导会为数据库模式中的所有表和视图生成 bean。

返回到主自述文件