Java 使用SimpleReadWriteEJBLock的锁定问题
首先,我正在使用Oracle和JBoss 4.0.4,在JBoss方面我几乎是个新手 我们的分布式应用程序使用CMPBeans和SimpleReadWrite。。。etc锁定策略,据我所知,这似乎是当时的最佳选择。(原始开发人员不再与我们合作,我无法轻易从他们那里获得反馈,更不用说完全缺乏文档了) 相关配置如下所示:Java 使用SimpleReadWriteEJBLock的锁定问题,java,locking,ejb-2.x,jboss-4.0.x,Java,Locking,Ejb 2.x,Jboss 4.0.x,首先,我正在使用Oracle和JBoss 4.0.4,在JBoss方面我几乎是个新手 我们的分布式应用程序使用CMPBeans和SimpleReadWrite。。。etc锁定策略,据我所知,这似乎是当时的最佳选择。(原始开发人员不再与我们合作,我无法轻易从他们那里获得反馈,更不用说完全缺乏文档了) 相关配置如下所示: <container-configuration extends="Standard CMP 2.x EntityBean with cache invalidation"&
<container-configuration extends="Standard CMP 2.x EntityBean with cache invalidation">
<container-name>Standard CMP 2.x EntityBean</container-name>
<locking-policy>org.jboss.ejb.plugins.lock.SimpleReadWriteEJBLock</locking-policy>
<container-cache-conf>
<cache-policy>org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy</cache-policy>
<cache-policy-conf>
<min-capacity>150</min-capacity>
<max-capacity>1000000</max-capacity>
<overager-period>600</overager-period>
<max-bean-age>1800</max-bean-age>
<resizer-period>400</resizer-period>
<max-cache-miss-period>60</max-cache-miss-period>
<min-cache-miss-period>1</min-cache-miss-period>
<cache-load-factor>0.75</cache-load-factor>
</cache-policy-conf>
</container-cache-conf>
<container-pool-conf>
<MaximumSize>1000</MaximumSize>
</container-pool-conf>
<cache-invalidation>true</cache-invalidation>
</container-configuration>
事务超时,然后在锁定的表上锁定来自每个其他用户的每个其他事务。每次发生这种情况时,我们都必须重置服务或终止锁定的DB会话。。。或者希望问题会自行解决(有时锁会在几秒钟内解除)
有什么不对劲吗?一个更具体的问题是,为什么超时事务最终锁定了资源,而不是安静地回滚?非常感谢您的帮助。我忘了包括原始配置中的相关部分:
<container-configuration>
<container-name>Standard CMP 2.x EntityBean with cache invalidation</container-name>
<call-logging>false</call-logging>
<invoker-proxy-binding-name>entity-rmi-invoker</invoker-proxy-binding-name>
<container-interceptors>
...
</container-interceptors>
<instance-pool>org.jboss.ejb.plugins.EntityInstancePool</instance-pool>
<instance-cache>org.jboss.ejb.plugins.InvalidableEntityInstanceCache</instance-cache>
<persistence-manager>org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager</persistence-manager>
<locking-policy>org.jboss.ejb.plugins.lock.QueuedPessimisticEJBLock</locking-policy>
<container-cache-conf>
...
</container-cache-conf>
<container-pool-conf>
<MaximumSize>100</MaximumSize>
</container-pool-conf>
<commit-option>A</commit-option>
</container-configuration>
带缓存失效的标准CMP2.x EntityBean
假的
实体rmi调用程序
...
org.jboss.ejb.plugins.EntityInstancePool
org.jboss.ejb.plugins.InvalidableEntityInstanceCache
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager
org.jboss.ejb.plugins.lock.QueuedPressimisticejblock
...
100
A.
我忘了包括原始配置中的相关部件:
<container-configuration>
<container-name>Standard CMP 2.x EntityBean with cache invalidation</container-name>
<call-logging>false</call-logging>
<invoker-proxy-binding-name>entity-rmi-invoker</invoker-proxy-binding-name>
<container-interceptors>
...
</container-interceptors>
<instance-pool>org.jboss.ejb.plugins.EntityInstancePool</instance-pool>
<instance-cache>org.jboss.ejb.plugins.InvalidableEntityInstanceCache</instance-cache>
<persistence-manager>org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager</persistence-manager>
<locking-policy>org.jboss.ejb.plugins.lock.QueuedPessimisticEJBLock</locking-policy>
<container-cache-conf>
...
</container-cache-conf>
<container-pool-conf>
<MaximumSize>100</MaximumSize>
</container-pool-conf>
<commit-option>A</commit-option>
</container-configuration>
带缓存失效的标准CMP2.x EntityBean
假的
实体rmi调用程序
...
org.jboss.ejb.plugins.EntityInstancePool
org.jboss.ejb.plugins.InvalidableEntityInstanceCache
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager
org.jboss.ejb.plugins.lock.QueuedPressimisticejblock
...
100
A.
这看起来是。这看起来是