http://www.gg3721.com/
Home
» users.openjpa »
how to lock a entity with pessmistic lock?
zhourui
2013-05-14
Author Login
Post Reply
the entity default use optimisticLock in my application;
but in some case i want's other transactions cannot concurrently read or
write the entity.
so i try to use pessimistic lock. is that right?
60 row : entityManager.lock(origin,LockModeType.PESSIMISTIC_WRITE);
public InputModule get(String id) {
try {
InputModule origin = entityManager.find(InputModule.class, id);
if (null != origin) {
entityManager.lock(origin,LockModeType.PESSIMISTIC_WRITE);
return origin;
}
} catch (Exception e) {
logger.error("can't get InputModule instance" + id, e);
ejbContext.setRollbackOnly();
}
return null;
}
but got error. how to lock a entity with pessmistic lock?
<openjpa-2.2.1.1-SNAPSHOT-r422266:1438134 nonfatal store error>
org.apache.openjpa.persistence.OptimisticLockException
:
无法获取对象“com.plasticmummy.ufsc20.entity.module.InputModule-2770DEBEC95D4DAE8B1D4FBDEF358FB0”上的锁定,耗时
-1 毫秒。
FailedObject:
com.plasticmummy.ufsc20.entity.module.InputModule-2770DEBEC95D4DAE8B1D4FBDEF358FB0
at
org.apache.openjpa.jdbc.kernel.PessimisticLockManager
.checkLock (
PessimisticLockManager.java
:232)
at
org.apache.openjpa.jdbc.kernel.PessimisticLockManager
.lockRow (
PessimisticLockManager.java
:144)
at
org.apache.openjpa.jdbc.kernel.PessimisticLockManager
.lockInternal (
PessimisticLockManager.java
:109)
at
org.apache.openjpa.jdbc.kernel.MixedLockManager.lockInternal(MixedLockManager.java:76)
at
org.apache.openjpa.kernel.VersionLockManager
.commonLock (
VersionLockManager.java
:95)
at
org.apache.openjpa.kernel.VersionLockManager
.lock (
VersionLockManager.java
:71)
at
org.apache.openjpa.kernel.BrokerImpl
.lock (
BrokerImpl.java
:3885)
at
org.apache.openjpa.kernel.DelegatingBroker
.lock (
DelegatingBroker.java
:1305)
at
org.apache.openjpa.persistence.EntityManagerImpl
.lock (
EntityManagerImpl.java
:1206)
at
org.apache.openjpa.persistence.EntityManagerImpl
.lock (
EntityManagerImpl.java
:1191)
at
com.ibm.ws.jpa.management.JPAExEmInvocation.lock(JPAExEmInvocation.java:293)
at
com.ibm.ws.jpa.management.JPAEntityManager.lock(JPAEntityManager.java:260)
at
com.plasticmummy.ufsc20.service.module.InputModuleService.get(InputModuleService.java:60)
at
com.plasticmummy.ufsc20.service.module.EJSLocalNSLInputModuleService_5cd28e4b.get(EJSLocalNSLInputModuleService_5cd28e4b.java)
at
com.plasticmummy.ufsc20.scratchpad.timer.TestTimer1.automaticTimeout(TestTimer1.java:22)
at
sun.reflect.NativeMethodAccessorImpl.invoke0
(Native Method)
at
sun.reflect.NativeMethodAccessorImpl
.invoke (
NativeMethodAccessorImpl.java
:60)
at
sun.reflect.DelegatingMethodAccessorImpl
.invoke (
DelegatingMethodAccessorImpl.java
:37)
at
java.lang.reflect.Method
.invoke (
Method.java
:611)
at
com.ibm.ejs.container.TimedObjectWrapper.invokeCallback(TimedObjectWrapper.java:129)
at com.ibm.ejs.container.TimerNpListener.doWork(TimerNpListener.java:293)
at
com.ibm.ejs.container.TimerNpListener.doWorkWithRetries(TimerNpListener.java:171)
at com.ibm.ejs.container.TimerNpListener.fired(TimerNpListener.java:141)
at com.ibm.ws.asynchbeans.AlarmImpl.callListenerMethod(AlarmImpl.java:427)
at com.ibm.ws.asynchbeans.timer.GenericTimer.run(GenericTimer.java:228)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1178)
at com.ibm.ws.asynchbeans.AlarmImpl.runListenerAsCJWork(AlarmImpl.java:249)
at com.ibm.ws.asynchbeans.am._Alarm.fireAlarm(_Alarm.java:333)
at com.ibm.ws.asynchbeans.am._Alarm.run(_Alarm.java:230)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1815)
--
Sent from the OpenJPA Users mailing list archive at Nabble.com.
©2008 gg3721.com - Jax Systems, LLC, U.S.A.