IllegalStateException:Illegal to call this method from injected,managed EntityManager
Salut,
j'essaie d'exécuter mon session bean mais malhuersement je reçois l'erreur suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
javax.ejb.EJBTransactionRolledbackException: Illegal to call this method from injected, managed EntityManager
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:87)
at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:245)
at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:268)
at org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:138)
at $Proxy165.onMessage(Unknown Source)
at org.jboss.resource.adapter.jms.inflow.JmsServerSession.onMessage(JmsServerSession.java:178)
at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:891)
at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:170)
at org.jboss.mq.SpySession.run(SpySession.java:323)
at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:237)
at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalStateException: Illegal to call this method from injected, managed EntityManager
at org.jboss.ejb3.entity.TransactionScopedEntityManager.getTransaction(TransactionScopedEntityManager.java:226)
at org.jboss.seam.persistence.EntityManagerProxy.getTransaction(EntityManagerProxy.java:110)
at
... |
et voiçi comment est declaré mon bean :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
@Name("monbean")
public class MyFirstBean implements MonInterface{
@Logger
Log log;
@PersistenceContext
private EntityManager em;
public MyFirstBean () {
}
public void start(Message msg) { // methode de mon interface
try {
em.getTransaction().begin(); // erreur a ce niveau
// ...mon traitement
} catch (Exception e) {
log.error("Ooops! Exception", e);
} finally {
jbpmContext.close();
em.getTransaction().commit();
}
}
} |
et finalement mon interface est la suivante:
Code:
1 2 3 4 5 6
|
import javax.jms.Message;
public interface MonInterface{
public void start(Message msg);
} |
je ne comprends pas pourquoi j'ai cet erreur?
Merci