2

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.

誰か助けてください、私はこれについて本当に混乱しています

4

1 に答える 1

0

@Stateful拡張永続コンテキストは、TomEEビルドおよびJavaEETCKでさまざまな方法でテストされます。

おそらくこれは完全に別のものです。@Statelessとの誤った組み合わせに注意して、明らかな間違いを犯した場合は、警告するように最善を尽くしますPersistenceContextType.EXTENDED

に変更される前のJNDI名が含まれcom.testwebservice.TestJPAServiceていることを考えると、このBeanも違法であると 思います。BeanをBeanにすることはできません。この間違いを防ぐための適切なチェックがなければ、Beanは実際には2回デプロイされていると思います。1回はBeanとして、もう1回はpojoとして。エラーの原因はpojoWebサービスです。@Stateless@Stateful@WebService@Stateful@WebService@Stateful@WebService

それがエラーの場合は、その条件を明示的に確認するためにJIRAを提出しました。

于 2012-02-08T21:30:56.493 に答える