Changing the locking policy


    CMP locking is described here.


    Common mistakes


    Trying to use a globally shared instance cache without a real lock


    If you DON'T use a real BeanLock implementation like QueuedPessimisticEJBLock then you cannot

    use the global shared instance cache. You need to use the "instance per transaction"

    configuration which will give you commit option C semantics and potentially "MVCC" when used

    with optimistic locking.


    Using CMP outside a transaction with a shared cache


    Since locks are taken per instance at the transaction level, if you use CMP outside a transaction

    then the locking is undefined (see also the warning paragraph in the spec about using CMP

    outside a transaction).


    Basically, if you are doing anything more than read-only semantics you are probably not going to

    get the behaviour you expect.