Je continue sur une autre question, liée cette fois-ci à l'utilisation des EJB Entity.
mon EJB Session (KeepAlive) sollicite un EJB Entity. Si je veux appeller em.persist, je prend une exception:
javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction
Et par contre, si j'utilise une transaction, j'ai une exception du type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 @Stateless public class KeepAliveBean extends Thread implements IKeepAlive { @PersistenceContext(name="KeepAliveModule") EntityManager em; .... public void start(String moduleName, int period){ try{ em.persist(KA); ......
java.lang.IllegalStateException: Illegal to call this method from injected, managed EntityManager
Il m'avait semblé que les Transactions n'étaient pas nécessaires, et l'utilisation des Entity Bean plutot simples.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 @Stateless public class KeepAliveBean extends Thread implements IKeepAlive { @PersistenceContext(name="KeepAliveModule") EntityManager em; .... public void start(String moduleName, int period){ EntityTransaction tx = em.getTransaction(); tx.begin(); try{ em.persist(KA); ...... tx.commit();
qu'en pensez vous ?
Merci,
Tiamat.
Partager