Part of my application's requirements involve me saving the transaction id of
some operations. I am using a CMT StatelessSessionBean. I thought that I
could get the id via entityManager.getTransaction(), but that yields the
following IllegalStateException. Is there another way to get to this
information without switching to user managed transactions?
| java.lang.IllegalStateException: Illegal to call this method from injected,
managed EntityManager
| at
org.jboss.ejb3.entity.TransactionScopedEntityManager.getTransaction(TransactionScopedEntityManager.java:226)
| at
com.noverant.service.audit.StatelessAuditService.addEntry(StatelessAuditService.java:69)
| at sun.reflect.GeneratedMethodAccessor183.invoke(Unknown Source)
| at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
| ...
|
Relevant portions of the class that is generating this error:
| package com.noverant.service.audit;
|
| import ...
|
| @Stateless (name="AuditService")
| public class StatelessAuditService implements AuditService
| {
| protected EntityManager entityManager = null;
| protected SessionContext sessionContext = null;
|
| @PersistenceContext(unitName = "nets-system")
| public void setEntityManager(EntityManager entityManager)
| {
| this.entityManager = entityManager;
| }
|
| @Resource
| public void setSessionContext(SessionContext sessionContext)
| {
| this.sessionContext = sessionContext;
| }
|
| public void addEntry(AuditEntry ae)
| {
| String transactionId =
entityManager.getTransaction().toString();
| }
|
| }
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4112726#4112726
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4112726
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user