【发布时间】:2013-09-13 18:03:09
【问题描述】:
我使用 WebSphere 7 和 OpenJPA。
这是两个bean和persistance.xml的一部分:
<persistence-unit name="ASAP_Main">
<jta-data-source>jdbc/ASAPDB</jta-data-source>
<properties>
<property name="openjpa.Optimistic" value="false"/>
<property name="openjpa.ReadLockLevel" value="none"/>
<property name="openjpa.WriteLockLevel" value="none"/>
<property name="openjpa.LockManager" value="pessimistic(VersionCheckOnReadLock=false,VersionUpdateOnWriteLock=false)"/>
<property name="openjpa.LockTimeout" value="20000"/>
</properties>
</persistence-unit>
@PersistenceContext(unitName = "ASAP_Main")
private EntityManager em;
@MessageDriven
public class A implements MessageListener {
@EJB
private B b;
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void onMessage(Message message) {
b.processWithLock(message.getObject());
...
}
}
@Stateless
public class B{
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void processWithLock(Object obj){
em.lock(obj)
...
}
}
processWithLock在执行后会释放锁吗?
【问题讨论】:
-
entityManager来自哪里?请出示您的persistence.xml。请添加processWithLock的完整源码。 -
不相关的评论,但是......所有这些注释。所有这些假定的反思都在进行。我刚开始使用 JPA,但是……以这种方式管理数据的性能税似乎应该很高。
-
@Beryllium 感谢您编辑我的帖子,我添加了没有实体的persistance.xml。
标签: java ejb openjpa websphere-7