0

我正在将 Weblogic 9 应用程序迁移到 JBoss 5.1,并遇到以下问题:

会话 ejb 管理 CMP 2.1 实体。这些是在调用 MyEntityLocalHome.create() 方法时插入的。由于数据库表具有“非空”约束,因此通常在调用 create() 方法后设置的某些字段未设置,插入失败。

我知道如果经理调用了 create(myNotNullField); 方法,传递正确的参数,问题就解决了。不幸的是,管理器使用的层在运行时发现应该调用哪个 *LocalHome 和哪个 create() 方法(通过自省),并且使用实体的 PK 字段发现 create 方法。这意味着该层找不到带有不属于 PK 一部分的参数的 create() 方法。

在 JBoss 文档中,我找到了一个参数 (insert-after-ejb-post-create),它允许我在 ejbPostCreate(...) 方法之后推迟插入,但这也不能解决我的问题,因为“ LocalHome.create() 调用在数据库插入后仍然返回。

如何将数据库中的实际插入延迟到事务结束,以便经理可以设置“非空”字段?由于该应用程序在 Weblogic 9 中运行,我猜想 WLS 中存在这样的选项......这个参数是否存在于 Jboss 5.1 中?

谢谢你的帮助 :)

4

1 回答 1

0

这是通过使用标准 jboss.xml 中的 cmp2.x jdbc2 配置完成的,其中 insert-after-ejb-postprocess 设置为 false。

于 2010-08-23T11:32:56.320 回答