【问题标题】:TomEE 4 JPA issueTomEE 4 JPA 问题
【发布时间】:2011-12-09 11:05:35
【问题描述】:

我正在 TomEE 4.0.0 上尝试简单的 JPA 示例,但我无法让 PersistenceContextType.EXTENDED 正常工作

如果我将会话 bean 设为无状态并保留 PersistenceContextType,那么它可以正常工作

@PersistenceContext(unitName = "xxx" )
private EntityManager entityManager;

如果我将会话 bean 保持为无状态,然后尝试使用它

@PersistenceContext(unitName = "xxx", type = PersistenceContextType.EXTENDED))
private EntityManager entityManager;

它在部署时给我一个错误,这非常好并且符合预期。

但是现在当我将我的 bean 设置为 @Stateful 时,它也会给我一个错误

Managed ejbs are not capable of using EntityManagers with EXTENTED persistence.  Convert your bean to a Stateful ejb or update the "java:comp/env/com.testwebservice.TestJPAService/entityManager" PersistenceContext reference to PersistenceContextType.TRANSACTION.

有人可以帮忙吗,我真的很困惑

【问题讨论】:

  • 您确定您的更改已被识别吗?干净的构建可能有助于确保获取更改。如果您仍然面对它,您可以添加整个堆栈跟踪吗?
  • 在旁注中,TomEE 不是 4.0 版。它是 1.0-beta1 版本,它使用 OpenEJB 4.0-beta1 版本

标签: jpa cdi apache-tomee


【解决方案1】:

@Stateful EXTENDED 持久性上下文在 TomEE 构建和 Java EE TCK 中以多种方式进行了测试。

这可能完全是另外一回事。当您注意到@StatelessPersistenceContextType.EXTENDED 的错误组合时,我们会尽力警告您

查看包含com.testwebservice.TestJPAService 的JNDI 名称,考虑到它在更改为@Stateful 之前是@Stateless,我猜这个bean 也是一个@WebService,这是非法的。 @Stateful bean 不能是 @WebService bean。如果没有适当的检查来防止这个错误,我的猜测是 bean 实际上被部署了两次;一次是 @Stateful bean,一次是 pojo @WebService。 pojo Web 服务是导致错误的原因。

如果这是错误,我已经为我们提交了一个 JIRA 以明确地check that condition

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多