TomEE 4 JPA问题

时间:2011-12-09 11:05:36

标签: jpa cdi apache-tomee

我在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.

有人可以帮助,我真的很困惑这个

1 个答案:

答案 0 :(得分:0)

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

可能这完全是另一回事。当您发现明显错误时,我们会尽力警告您@StatelessPersistenceContextType.EXTENDED的错误组合

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

如果是错误,我已经为我们明确check that condition提交了JIRA。