我在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.
有人可以帮助,我真的很困惑这个
答案 0 :(得分:0)
@Stateful
EXTENDED持久化上下文在TomEE构建和Java EE TCK中以多种方式进行测试。
可能这完全是另一回事。当您发现明显错误时,我们会尽力警告您@Stateless
与PersistenceContextType.EXTENDED
的错误组合
查看包含com.testwebservice.TestJPAService
的JNDI名称,并在将其更改为@Stateless
之前将其视为@Stateful
,我的猜测是这个bean也是@WebService
这是非法的。 @Stateful
bean不能是@WebService
个bean。如果没有适当的检查来防止这个错误,我的猜测是这个bean实际上被部署了两次;一次作为@Stateful
bean,一次作为pojo @WebService
。 pojo Web服务是导致错误的服务。
如果是错误,我已经为我们明确check that condition提交了JIRA。