你知道datanucleus中的PMF是否是线程安全的?我有以下问题:
我有一个PMF,它创建了几个PersistenceManagers,一个用于方法调用。PMF在线程和方法之间共享。
在单线程中运行应用程序时一切正常,但当应用程序部署在Tomcat上时,压力测试显示,在某些情况下,持久性管理器堆叠在并发的getObjectById调用上。
这不是一个锁定问题,因为非事务性读取处于打开状态。多线程标志也被设置为true。
每次创建新的PMF时,这个问题都消失了。但是这个解决方案是昂贵的。对更好的解决方案有什么想法吗?
发布于 2012-05-30 02:33:55
正如JDO规范明确说明的那样,PMF是线程安全的。PM不是线程安全的,所有DataNucleus文档都建议每个请求一个PM。由于您(假设您)每个请求有1个PM,因此不存在锁定的前景,因为PM不与另一个PM共享任何内容
如果你说你有阻塞,你可以很容易地提供一个线程转储,它显示了两个PM是如何相互锁定的,然后演示了什么阻塞了什么以及为什么阻塞。可能性...L2缓存,存储管理器(数据存储)。显然,使用最新的版本对所有这些都有意义
https://stackoverflow.com/questions/10795179
复制相似问题