|
||||||||||
| PREV CLASS (src) NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.jboss.ejb.plugins.lock.BeanLockSupport (src)
org.jboss.ejb.plugins.lock.SimpleReadWriteEJBLock
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.
| Field Summary |
| Fields inherited from class org.jboss.ejb.plugins.lock.BeanLockSupport (src) |
container, id, refs, synched, synchedDepth, tx, txTimeout |
| Constructor Summary | |
SimpleReadWriteEJBLock()
|
|
| Method Summary | |
void |
endInvocation(Invocation (src) mi)
Callback to the BeanLock to inform it that a method invocation has ended. |
void |
endTransaction(Transaction (src) transaction)
Informs the lock that the given transaction has ended. |
void |
schedule(Invocation (src) mi)
This method implements the actual logic of the lock. |
void |
wontSynchronize(Transaction (src) 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 (src) |
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 |
public SimpleReadWriteEJBLock()
| Method Detail |
public void schedule(Invocation (src) mi)
BeanLock (src)
schedule in interface BeanLock (src) schedule in class BeanLockSupport (src) public void endTransaction(Transaction (src) transaction)
BeanLock (src)
endTransaction in interface BeanLock (src) endTransaction in class BeanLockSupport (src) public void wontSynchronize(Transaction (src) transaction)
BeanLock (src) 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?
wontSynchronize in interface BeanLock (src) wontSynchronize in class BeanLockSupport (src) public void endInvocation(Invocation (src) mi)
BeanLock (src)
endInvocation in interface BeanLock (src) endInvocation in class BeanLockSupport (src)
|
||||||||||
| PREV CLASS (src) NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||