EJBDEPLOY 关系 – 故障诊断提示
使用这些信息对 EJBDEPLOY 问题的信息进行故障诊断。
![[z/OS]](../images/ngzos.gif)
DB2 for z/OS 版本 7.x
当 EJBDeploy 在 DB2 for z/OS V7.x 中创建数据关系时可能存在问题。EJBDeploy 创建一张表,该表带有互相关联的 EJB 的两个主键的组合。如果组合键大于 254 个字符,那么 DB2 for z/OS V7.x 将不会接受此关系,并且可能发生以下错误:
DSNT408I SQLCODE = -613, ERROR: THE PRIMARY KEY OR A UNIQUE CONSTRAINT IS TOO LONG OR HAS TOO MANY COLUMNS DSNT418I SQLSTATE = 54008 SQLSTATE RETURN CODE为两个相关 bean 创建的主键具有字符串的主键时,可以遇到此问题。此结果是,组合由 2 varchar (250) 主键,总计为 500 组成,这 大于 DB2 for z/OS 版本 7.x 中 254 的最大值。
当利用自顶向下映射时要考虑以下问题,以确保您不会遇到此问题:
- 自顶向下映射是准则且必须与 DBA 一起查看。
- 由 EJBDeploy 自顶向下创建的模式仅为测试而设计,并且作为实际模式必需的准则。中间会合映射的使用不存在此问题。
- 当使用具有 2K 最大键长度的 DB2 V8 时,不会遇到组合键约束问题。
EJBDEPLOY_JVM_ARGS:
请设置 EJBDEPLOY_JVM_ARGS 属性,以覆盖那些传递到用于部署 EJB 的代码 (ejbdeploy.sh) 的 Java 虚拟机 (JVM) 选项。在下列其中一个位置设 置此属性: deploymentmanager/bin/setupCmdLine.sh 或 appServerHome/bin/setupCmdLine.sh
例如,以下内容指定应该生成未限定的 SQL:
export EJBDEPLOY_JVM_ARGS="-DEJBDEPLOY_GENERATE_UNQUALIFIED_SQL=true"
未对主键的外键值调用为主键定义的转换器
主键字段至数据库列的映射可能会使用转换器来变换键值。如果容器管理的持久性 (CMP) bean 使用转换器来映射它的主键,并且该 bean 拥 有一种关系(关系中另一方的 bean 包含一个外键),那么该外键的映射不会使用该转换器。
可能会发生下列错误,表示未对主键的外键值调用为主键定义的转换器。在运行 ejbDeploy 命令期间,接收到
以下消息:
没有定义 Java datatype1 至数据库 datatype2 的类型映射在运行时,应用程序在关系的另一方中找不到 CMP bean。
要解决此限制,可在数据库表中定义自己的外键,并在关系的另一方上创建使用为企业 Bean 的主键所定义转换器的映射。