BackingMap 实例的锁定超时值用来确保应用程序不会无限期等待由于应用程序出错导致发生的锁定情况而授予锁定方式。
发生 LockTimeoutException 异常时,应用程序必须确定是否因为应用程序运行速度比预期缓慢而发生了超时,或者由于死锁情况而发生超时。如果确实发生了死锁情况,那么增大锁定等待超时值并不会消除该异常。增大超时将导致发生异常的时间更长。但是,如果增大锁定等待超时值无法消除该异常,那么是因为应用程序运行速度比预期缓慢而产生问题。在这种情况下,应用程序必须确定性能下降的原因。
要防止发生死锁,锁管理器具有缺省超时值 15 秒。如果超过超时限制,那么会发生 LockTimeoutException 异常。如果系统的负载很重,那么缺省超时值可能会导致不存在死锁时也发生 LockTimeoutException 异常。在这种情况下,您可以通过程序或者在 ObjectGrid 描述符 XML 文件中增大锁定超时值。
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="test">
<backingMap name="optimisticMap"
lockStrategy="OPTIMISTIC"
lockTimeout="60"/>
</objectGrid>
</objectGrids>
</objectGridConfig>