Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jboss.ejb.plugins.lock
Class SimpleReadWriteEJBLock

    java.lang.Object
      org.jboss.ejb.plugins.lock.BeanLockSupport
          org.jboss.ejb.plugins.lock.SimpleReadWriteEJBLock

All Implemented Interfaces:
  BeanLock, BeanLockExt, org.jboss.util.deadlock.Resource

public class SimpleReadWriteEJBLock
extends BeanLockSupport

This lock allows multiple read locks concurrently. Once a writer has requested the lock, future read-lock requests whose transactions do not already have the read lock will block until all writers are done -- then all the waiting readers will concurrently go (depending on the reentrant setting / methodLock). A reader who promotes gets first crack at the write lock -- ahead of other waiting writers. If there is already a reader that is promoting, we throw an inconsistent read exception. Of course, writers have to wait for all read-locks to release before taking the write lock.

Version:
  $Revision: 1.5.6.1 $

  Revisions:

  2002/6/4: yarrumretep

  1. Initial revision
Author:
  Peter Murray

Field Summary

Fields inherited from class org.jboss.ejb.plugins.lock.BeanLockSupport
`container, id, refs, synched, synchedDepth, tx, txTimeout`

Constructor Summary
`SimpleReadWriteEJBLock()`

Method Summary
`void` | `endInvocation(Invocation mi)` Callback to the BeanLock to inform it that a method invocation has ended.
`void` | `endTransaction(Transaction transaction)` Informs the lock that the given transaction has ended.
`void` | `schedule(Invocation mi)` This method implements the actual logic of the lock.
`void` | `wontSynchronize(Transaction transaction)` Signifies to the lock that the transaction will not Synchronize (Tx demarcation not seen).

Methods inherited from class org.jboss.ejb.plugins.lock.BeanLockSupport
`addRef, attemptSync, getId, getRefs, getResourceHolder, getTransaction, releaseSync, removeRef, setContainer, setId, setTimeout, setTransaction, sync`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SimpleReadWriteEJBLock

    public SimpleReadWriteEJBLock()

Method Detail

### schedule

    public void schedule(Invocation mi)

  Description copied from interface: `BeanLock`
  This method implements the actual logic of the lock. In the case of an EJB lock it must at least implement the serialization of calls

  Specified by:
    `schedule` in interface `BeanLock`
  Specified by:
    `schedule` in class `BeanLockSupport`

### endTransaction

    public void endTransaction(Transaction transaction)

  Description copied from interface: `BeanLock`
  Informs the lock that the given transaction has ended.

  Specified by:
    `endTransaction` in interface `BeanLock`
  Specified by:
    `endTransaction` in class `BeanLockSupport`

### wontSynchronize

    public void wontSynchronize(Transaction transaction)

  Description copied from interface: `BeanLock`
  Signifies to the lock that the transaction will not Synchronize (Tx demarcation not seen).

  OSH: This method does not seem to be called from anywhere. What is it meant for? To be called on a timeout before the transaction has terminated?

  Specified by:
    `wontSynchronize` in interface `BeanLock`
  Specified by:
    `wontSynchronize` in class `BeanLockSupport`

### endInvocation

    public void endInvocation(Invocation mi)

  Description copied from interface: `BeanLock`
  Callback to the BeanLock to inform it that a method invocation has ended. A common use of this method is to release a method lock.

  Specified by:
    `endInvocation` in interface `BeanLock`
  Specified by:
    `endInvocation` in class `BeanLockSupport`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002 JBoss Group, LLC. All Rights Reserved.