EJB 3.0 Locking (entity not in the persistence context)
grdzeli_kaci Apr 16, 2007 9:45 AMhi all,
i have some problems about locking,
i have 1 remote and one local interface
1. Remote Interface
public @Stateful @Remote(RemoteInterface.class) class RemoteInterfaceBean implements RemoteInterface { @PersistenceContext(unitName = "CustomerCareOracle") private EntityManager oracleManager; public MySomeEntityObject object; @EJB MyLocalInterface inter; @TransactionAttribute(TransactionAttributeType.REQUIRED) public void fillMyObject(someparameters .... ) { // filling MySomeEntityObject object } @TransactionAttribute(TransactionAttributeType.REQUIRED) public void commitMyObject() { inter.AnotherOperatOnObject(object); oracleManager.persist(object); } }
2. My Local Interface
public @Stateless @Local(MyLocalInterface.class) class MyLocalInterfaceBean implements MyLocalInterface { @PersistenceContext(unitName = "CustomerCareOracle") private EntityManager oracleManager; @TransactionAttribute(TransactionAttributeType.REQUIRED) public void AnotherOperatOnObject(MySomeEntityObject object) { oracleManager.lock(object,LockModeType.READ); // <= Here I Got An Error // do some operation and is succsess, It's very good ;) } }
when i tryed to lock object i got an error, i can't resolve this problem :(
can anybody help me ?
error trace
17:43:21,343 ERROR [errorCat] java.lang.IllegalArgumentException: entity not in the persistence context at org.hibernate.ejb.AbstractEntityManagerImpl.lock(AbstractEntityManagerImpl.java:336) at org.jboss.ejb3.entity.TransactionScopedEntityManager.lock(TransactionScopedEntityManager.java:101) at com.magti.businesslayer.ejb3Fasade.oracle.ccare.TransactionFasadeBean.lockAccounts(TransactionFasadeBean.java:203) at com.magti.businesslayer.ejb3Fasade.oracle.ccare.TransactionFasadeBean.doAfterCheck(TransactionFasadeBean.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112) at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166) at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:57)
Regards,
Paata.