|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.objectweb.jonas_ejb.container.JEntitySwitch
JEntitySwitch is used internally to synchronize accesses to the entity context and thus to the entity bean instance. All parts common to EJBObject and EJBLocalObject should be here. Different policies can be applied to manage context/instance pairs: - only 1 pair (container manages the transaction isolation) - 1 pair for each transaction (transaction isolation managed by DataBase) - 2 pairs (1 for transactional accesses, 1 for non transaction accesses)
Field Summary | |
protected JEntityFactory |
bf
The Factory for this bean |
protected javax.transaction.Transaction |
blockedtx
last transaction blocked by synchronization. |
protected static int |
counter
|
protected int |
countIH
nb of non transacted requests running |
protected boolean |
discarded
True when context/instance has been discarded, to avoids that passivate store its state on storage Meaningful only outside tx |
protected java.lang.String |
ident
|
protected boolean |
inDirtyList
True if this instance may have been modified outside transactions. |
protected boolean |
isremoved
|
protected boolean |
lazyregister
true if we can differ the registration at first write. |
protected JEntityLocal |
local
The EJBLocalObject, or null if bean has no local interface. |
protected int |
lockpolicy
Lock policy used for this entity bean. |
protected boolean |
mustReload
True if instance has been modified by a Transaction. |
protected javax.ejb.TimerService |
myTimerService
The Timer Service |
protected java.lang.Object |
pk
The Primary Key for this bean instance. |
protected JEntityRemote |
remote
The EJBObject, or null if bean has no remote interface. |
protected javax.transaction.Transaction |
runningtx
|
protected boolean |
shared
shared=true if the bean can be modify outside this container. |
protected boolean |
txUpdates
True if a transaction is mandatory for all modifying methods. |
protected int |
waiters
nb of threads waiting (synchronization) |
protected javax.transaction.Transaction |
writingtx
|
Constructor Summary | |
JEntitySwitch()
empty constructor. |
Method Summary | |
void |
bindICtx(javax.transaction.Transaction tx,
JEntityContext bctx)
bind a JEntityContext for a create method. |
void |
discardICtx(javax.transaction.Transaction tx)
Discard a context/instance at end of request. |
abstract void |
endIH()
|
JFactory |
getBeanFactory()
|
javax.transaction.Transaction |
getBlockedTx()
|
javax.transaction.Transaction |
getBlockingTx()
|
javax.ejb.TimerService |
getEntityTimerService()
Obtains the TimerService associated for this Entity Bean (one / pk) |
JEntityContext |
getICtx(javax.transaction.Transaction tx)
Get a context/instance associated with this transaction Called at each request on the bean (including remove) |
JEntityContext |
getICtx(javax.transaction.Transaction tx,
JEntityContext newctx)
bind a JEntityContext for a remove method. |
JEntityLocal |
getLocal()
|
int |
getPolicy()
|
java.lang.Object |
getPrimaryKey()
|
JEntityRemote |
getRemote()
|
abstract int |
getState()
|
void |
init(JEntityFactory bf,
java.lang.Object pk)
constructor. |
protected abstract void |
initpolicy(JEntityFactory bf)
|
JEntityContext |
mapICtx(javax.transaction.Transaction tx,
JEntityContext bctx,
boolean forced,
boolean holdit)
Map a context and its instance. |
protected void |
noLongerUsed()
Remove this EJB and UnExport the remote object. |
void |
notifyTimeout(javax.ejb.Timer timer)
Notify a timeout for this bean and this Pk |
abstract void |
notifyWriting(javax.transaction.Transaction tx,
JEntityContext bctx)
|
abstract boolean |
passivateIH(boolean passivation)
|
protected void |
registerCtx(javax.transaction.Transaction tx,
JEntityContext bctx)
register a Context on the transaction, as a Synchronization. |
abstract void |
releaseICtx(javax.transaction.Transaction tx)
|
boolean |
terminate(javax.transaction.Transaction tx)
Release completely this object, since another one will be used. |
boolean |
tryBindICtx(javax.transaction.Transaction tx,
JEntityContext bctx)
Try to bind a JEntityContext if none already bound. |
void |
txCompleted(javax.transaction.Transaction tx,
boolean committed)
This transaction is now over. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected JEntityFactory bf
protected java.lang.Object pk
protected JEntityLocal local
protected JEntityRemote remote
protected boolean shared
protected int lockpolicy
protected boolean txUpdates
protected javax.ejb.TimerService myTimerService
protected int countIH
protected int waiters
protected boolean inDirtyList
protected boolean mustReload
protected boolean discarded
protected javax.transaction.Transaction runningtx
protected javax.transaction.Transaction writingtx
protected javax.transaction.Transaction blockedtx
protected boolean isremoved
protected static int counter
protected java.lang.String ident
protected boolean lazyregister
Constructor Detail |
public JEntitySwitch()
Method Detail |
protected abstract void initpolicy(JEntityFactory bf)
public abstract boolean passivateIH(boolean passivation)
public abstract void endIH()
public abstract void notifyWriting(javax.transaction.Transaction tx, JEntityContext bctx)
public abstract void releaseICtx(javax.transaction.Transaction tx)
public void init(JEntityFactory bf, java.lang.Object pk)
bf
- The Entity Factorypk
- The Primary Keypublic JEntityLocal getLocal()
public JEntityRemote getRemote()
public javax.ejb.TimerService getEntityTimerService()
public void notifyTimeout(javax.ejb.Timer timer)
timer
- timer whose expiration caused this notification.public java.lang.Object getPrimaryKey()
public void bindICtx(javax.transaction.Transaction tx, JEntityContext bctx)
tx
- - the Transaction objectbctx
- - the JEntityContext to bindpublic boolean tryBindICtx(javax.transaction.Transaction tx, JEntityContext bctx) throws javax.ejb.ObjectNotFoundException
tx
- - the Transaction objectbctx
- The Entity Context
javax.ejb.ObjectNotFoundException
public JEntityContext getICtx(javax.transaction.Transaction tx, JEntityContext newctx)
tx
- - the Transaction objectnewctx
- - the JEntityContext to bind
public JEntityContext getICtx(javax.transaction.Transaction tx)
tx
- - the Transaction object
public boolean terminate(javax.transaction.Transaction tx)
tx
- - the Transaction objectpublic JEntityContext mapICtx(javax.transaction.Transaction tx, JEntityContext bctx, boolean forced, boolean holdit)
tx
- - the Transaction objectbctx
- - the JEntityContext to bind if not nullforced
- - force to take this context. (case of create)holdit
- - increment count to hold it, a release will be called
later.
public javax.transaction.Transaction getBlockedTx()
public javax.transaction.Transaction getBlockingTx()
public void discardICtx(javax.transaction.Transaction tx)
tx
- - transaction associated to this contextpublic void txCompleted(javax.transaction.Transaction tx, boolean committed)
tx
- the transaction objectcommitted
- true if transaction was committed.protected void noLongerUsed()
protected void registerCtx(javax.transaction.Transaction tx, JEntityContext bctx)
tx
- Transaction objectbctx
- The Context to be registeredpublic int getPolicy()
public abstract int getState()
public JFactory getBeanFactory()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |