public class SessionBroker
extends org.eclipse.persistence.internal.sessions.DatabaseSessionImpl
Purpose: Provide a single view to a TopLink session that transparently accesses multple databases.
Responsibilities:
LOG_DEBUG, LOG_ERROR, LOG_INFO, LOG_WARNING| Constructor and Description |
|---|
SessionBroker()
PUBLIC:
Create and return a session broker.
|
| Modifier and Type | Method and Description |
|---|---|
SessionBroker |
acquireClientSessionBroker()
PUBLIC:
Return a session broker that behaves as a client session broker.
|
Session |
acquireHistoricalSession(AsOfClause clause)
INTERNAL:
Acquires a special historical session for reading objects as of a past time.
|
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl |
acquireUnitOfWork()
PUBLIC:
Return a unit of work for this session broker.
|
void |
addDescriptor(ClassDescriptor descriptor)
PUBLIC:
You cannot add a descriptor to a session broker, you must add it to its session.
|
void |
addDescriptors(Project project)
PUBLIC:
You cannot add a project to a session broker, you must add it to its session.
|
void |
addDescriptors(Vector descriptors)
PUBLIC:
You cannot add descriptors to a session broker, you must add them to its session.
|
boolean |
containsQuery(String queryName)
PUBLIC:
Return true if the pre-defined query is defined on the session.
|
org.eclipse.persistence.internal.databaseaccess.Accessor |
getAccessor(Class domainClass)
INTERNAL:
Return the lowlevel database accessor.
|
org.eclipse.persistence.internal.databaseaccess.Accessor |
getAccessor(String sessionName)
INTERNAL:
Return the lowlevel database accessor.
|
AsOfClause |
getAsOfClause()
ADVANCED:
Answers the past time this session is as of.
|
org.eclipse.persistence.internal.sessions.AbstractSession |
getExecutionSession(DatabaseQuery query)
INTERNAL:
Gets the session which this query will be executed on.
|
SessionBroker |
getParent()
INTERNAL:
Gets the parent SessionBroker.
|
org.eclipse.persistence.internal.sessions.AbstractSession |
getParentIdentityMapSession(DatabaseQuery query,
boolean canReturnSelf,
boolean terminalOnly)
INTERNAL:
Gets the next link in the chain of sessions followed by a query's check
early return, the chain of sessions with identity maps all the way up to
the root session.
|
org.eclipse.persistence.internal.databaseaccess.Platform |
getPlatform(Class domainClass)
INTERNAL:
Return the platform for a particular class.
|
DatabaseQuery |
getQuery(String name)
PUBLIC:
Return the query from the session pre-defined queries with the given name.
|
DatabaseQuery |
getQuery(String name,
Vector arguments)
PUBLIC:
Return the query from the session pre-defined queries with the given name and argument types.
|
org.eclipse.persistence.internal.sequencing.Sequencing |
getSequencing()
PUBLIC:
Return the Sequencing object used by the session.
|
org.eclipse.persistence.internal.sessions.AbstractSession |
getSessionForClass(Class domainClass)
INTERNAL:
Return the session to be used for the class.
|
org.eclipse.persistence.internal.sessions.AbstractSession |
getSessionForName(String name)
INTERNAL:
Return the session by name.
|
Map<String,org.eclipse.persistence.internal.sessions.AbstractSession> |
getSessionsByName()
INTERNAL:
Return sessions indexed by name.
|
int |
howManySequencingCallbacks()
INTERNAL:
Returns a number of member sessions that require sequencing callback.
|
void |
initializeDescriptors()
INTERNAL:
Allow each descriptor to initialize any dependencies on this session.
|
void |
initializeIdentityMapAccessor()
INTERNAL:
Set up the IdentityMapManager.
|
void |
initializeSequencing()
ADVANCED:
Creates sequencing object for the session broker.
|
Object |
internalExecuteQuery(DatabaseQuery query,
org.eclipse.persistence.internal.sessions.AbstractRecord row)
INTERNAL:
Return the results from exeucting the database query.
|
void |
internalRegisterSession(String name,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Register the session under its name.
|
boolean |
isBroker()
INTERNAL:
Returns true if the session is a session Broker.
|
boolean |
isClientSessionBroker()
PUBLIC:
Return if this session is a client session broker.
|
boolean |
isConnected()
PUBLIC:
Return if all sessions are still connected to the database.
|
boolean |
isSequencingCallbackRequired()
INTERNAL:
Indicates whether SequencingCallback is required.
|
boolean |
isServerSessionBroker()
PUBLIC:
Return if this session is a server session broker.
|
boolean |
isSessionBroker()
INTERNAL:
Return if this session is a session broker.
|
void |
login()
PUBLIC:
Connect to the database using the predefined login.
|
void |
login(String userName,
String password)
PUBLIC:
Connect to the database using the predefined login.
|
void |
logout()
PUBLIC:
Disconnect from all databases.
|
void |
registerSession(String name,
org.eclipse.persistence.internal.sessions.AbstractSession session)
PUBLIC:
Register the session under its name.
|
void |
registerSession(String name,
Session session)
PUBLIC:
Register the session under its name.
|
void |
release()
PUBLIC:
Release the session.
|
void |
releaseJTSConnection()
INTERNAL:
Called in the end of beforeCompletion of external transaction sychronization listener.
|
void |
setIntegrityChecker(IntegrityChecker integrityChecker)
PUBLIC:
set the integrityChecker.
|
void |
setLog(Writer log)
PUBLIC:
Set the message log.
|
void |
setProfiler(SessionProfiler profiler)
PUBLIC:
Set the profiler for the session.
|
void |
setSessionLog(SessionLog log)
PUBLIC:
Set the session log.
|
void |
setSessionsByName(Map sessionsByName)
INTERNAL:
Set sessions indexed by name.
|
void |
setSynchronized(boolean synched)
INTERNAL:
Set isSynchronized flag to indicate that members of session broker are synchronized.
|
void |
writesCompleted()
INTERNAL:
This method notifies the accessor that a particular sets of writes has
completed.
|
addDescriptors, connect, disconnect, getConnectedTime, getDatasourcePlatform, getPlatform, getSequencingControl, getServerPlatform, initializeConnectedTime, initializeDescriptorIfSessionAlive, initializeDescriptors, initializeDescriptors, isDatabaseSession, isLoggedIn, login, loginAndDetectDatasource, setServerPlatform, writeAllObjects, writeAllObjectsacquireNonSynchronizedUnitOfWork, acquireNonSynchronizedUnitOfWork, acquireUnitOfWork, addAlias, addJPAQuery, addQuery, addStaticMetamodelClass, beginExternalTransaction, beginTransaction, clearDescriptors, clearIntegrityChecker, clearLastDescriptorAccessed, clearProfile, clone, commitExternalTransaction, commitTransaction, compareObjects, compareObjectsDontMatch, config, copy, copy, copyDescriptorNamedQueries, copyInternal, copyObject, copyObject, copyReadOnlyClasses, deleteAllObjects, deleteAllObjects, deleteObject, doesObjectExist, dontLogMessages, endOperationProfile, endOperationProfile, executeCall, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, fine, finer, finest, getAccessor, getActiveCommandThreads, getActiveSession, getActiveUnitOfWork, getAliasDescriptors, getAllQueries, getBroker, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getCommandManager, getCommitManager, getDatasourceLogin, getDefaultReadOnlyClasses, getDefaultReferenceMode, getDescriptor, getDescriptor, getDescriptorForAlias, getDescriptors, getEventManager, getExceptionHandler, getExceptionHandlerClass, getExternalTransactionController, getId, getIdentityMapAccessor, getIdentityMapAccessorInstance, getIntegrityChecker, getJPAQueries, getLoader, getLog, getLogin, getLogLevel, getLogLevel, getLogSessionString, getName, getNextQueryId, getNextSequenceNumberValue, getNumberOfActiveUnitsOfWork, getParentIdentityMapSession, getPessimisticLockTimeoutDefault, getProfiler, getProject, getProperties, getProperty, getQueries, getQuery, getQueryTimeoutDefault, getRootSession, getSessionLog, getSessionTypeString, getStaticMetamodelClass, getTransactionMutex, handleException, handleSevere, hasBroker, hasCommitManager, hasDescriptor, hasEventManager, hasExceptionHandler, hasExternalTransactionController, hasProperties, incrementProfile, info, insertObject, isClassReadOnly, isClassReadOnly, isClientSession, isDistributedSession, isExclusiveConnectionRequired, isExclusiveIsolatedClientSession, isFinalizersEnabled, isHistoricalSession, isInBroker, isInProfile, isInTransaction, isIsolatedClientSession, isLoggingOff, isRemoteSession, isRemoteUnitOfWork, isServerSession, isSynchronized, isUnitOfWork, keyFromObject, keyFromObject, load, log, log, log, log, log, log, log, log, log, log, logMessage, logMessage, logThrowable, postConnectExternalConnection, preDisconnectExternalConnection, prepareDatabaseQuery, processCommand, processJPAQueries, readAllObjects, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, readObject, refreshAndLockObject, refreshAndLockObject, refreshObject, registerFinalizer, releaseReadConnection, releaseUnitOfWork, removeProperty, removeQuery, removeQuery, rollbackTransaction, setAccessor, setBroker, setCommandManager, setCommitManager, setDatasourceLogin, setDefaultReferenceMode, setEventManager, setExceptionHandler, setExternalTransactionController, setIsFinalizersEnabled, setIsInBroker, setIsInProfile, setLogin, setLogin, setLogLevel, setName, setPessimisticLockTimeoutDefault, setProject, setProperties, setProperty, setQueryTimeoutDefault, setShouldPropagateChanges, setWasJTSTransactionInternallyStarted, severe, shouldLog, shouldLogMessages, shouldLogMessages, shouldPropagateChanges, startOperationProfile, startOperationProfile, toString, unwrapObject, updateObject, updateProfile, validateCache, validateQuery, verifyDelete, warning, wasJTSTransactionInternallyStarted, wrapObject, writeObjectequals, getClass, hashCode, notify, notifyAll, wait, wait, waitbeginTransaction, commitTransaction, deleteAllObjects, deleteObject, getCommandManager, insertObject, isInTransaction, refreshAndLockObject, refreshAndLockObject, rollbackTransaction, setCommandManager, setDatasourceLogin, setExternalTransactionController, setLogin, setShouldPropagateChanges, shouldPropagateChanges, updateObject, writeObjectacquireUnitOfWork, addJPAQuery, addQuery, clearIntegrityChecker, clearProfile, copy, copy, copyObject, copyObject, doesObjectExist, dontLogMessages, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, getActiveSession, getActiveUnitOfWork, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getDatasourceLogin, getDefaultReferenceMode, getDescriptor, getDescriptor, getDescriptorForAlias, getDescriptors, getEventManager, getExceptionHandler, getExternalTransactionController, getId, getIdentityMapAccessor, getIntegrityChecker, getJPAQueries, getLog, getLogin, getLogLevel, getLogLevel, getName, getNextSequenceNumberValue, getProfiler, getProject, getProperties, getProperty, getQueries, getQuery, getSessionLog, handleException, handleSevere, hasDescriptor, hasExceptionHandler, hasExternalTransactionController, isClientSession, isDistributedSession, isFinalizersEnabled, isInProfile, isRemoteSession, isRemoteUnitOfWork, isServerSession, isUnitOfWork, keyFromObject, log, logMessage, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, refreshObject, removeProperty, removeQuery, setDefaultReferenceMode, setExceptionHandler, setIsFinalizersEnabled, setLogLevel, setName, setProperty, setQueryTimeoutDefault, shouldLog, shouldLogMessages, validateCachepublic SessionBroker()
public SessionBroker acquireClientSessionBroker()
public Session acquireHistoricalSession(AsOfClause clause) throws ValidationException
acquireHistoricalSession in interface SessionacquireHistoricalSession in class org.eclipse.persistence.internal.sessions.AbstractSessionclause - Represents a valid snap shot time.ValidationException - if this
not a ClientSession, plain Session, or SessionBroker.AsOfClause,
Expression.asOf(org.eclipse.persistence.history.AsOfClause),
ObjectLevelReadQuery.setAsOfClause(org.eclipse.persistence.history.AsOfClause),
HistoryPolicypublic void releaseJTSConnection()
releaseJTSConnection in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplpublic org.eclipse.persistence.internal.sessions.UnitOfWorkImpl acquireUnitOfWork()
acquireUnitOfWork in interface SessionacquireUnitOfWork in class org.eclipse.persistence.internal.sessions.AbstractSessionUnitOfWorkImplpublic void addDescriptor(ClassDescriptor descriptor)
addDescriptor in interface DatabaseSessionaddDescriptor in class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl#addDescriptors(Vector),
DatabaseSessionImpl.addDescriptors(org.eclipse.persistence.sessions.Project)public void addDescriptors(Vector descriptors) throws ValidationException
ValidationExceptionpublic void addDescriptors(Project project) throws ValidationException
addDescriptors in interface DatabaseSessionaddDescriptors in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplValidationExceptionpublic boolean containsQuery(String queryName)
containsQuery in interface SessioncontainsQuery in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic org.eclipse.persistence.internal.databaseaccess.Accessor getAccessor(Class domainClass)
getAccessor in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic org.eclipse.persistence.internal.databaseaccess.Accessor getAccessor(String sessionName)
getAccessor in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic AsOfClause getAsOfClause()
getAsOfClause in interface SessiongetAsOfClause in class org.eclipse.persistence.internal.sessions.AbstractSessionnull if no clause set, or this a regular session.org.eclipse.persistence.expressions.AsOfClause,
#acquireSessionAsOf(java.lang.Number),
#acquireSessionAsOf(java.util.Date),
#hasAsOfClausepublic SessionBroker getParent()
getParent in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic org.eclipse.persistence.internal.sessions.AbstractSession getParentIdentityMapSession(DatabaseQuery query, boolean canReturnSelf, boolean terminalOnly)
Used for session broker which delegates to registered sessions, or UnitOfWork which checks parent identity map also.
getParentIdentityMapSession in class org.eclipse.persistence.internal.sessions.AbstractSessioncanReturnSelf - true when method calls itself. If the path
starting at this is acceptable. Sometimes true if want to
move to the first valid session, i.e. executing on ClientSession when really
should be on ServerSession.terminalOnly - return the session we will execute the call on, not
the next step towards it.public org.eclipse.persistence.internal.sessions.AbstractSession getExecutionSession(DatabaseQuery query)
Since the execution session also knows the correct datasource platform to execute on, it is often used in the mappings where the platform is needed for type conversion, or where calls are translated.
Is also the session with the accessor. Will return a ClientSession if it is in transaction and has a write connection.
getExecutionSession in class org.eclipse.persistence.internal.sessions.AbstractSessionquery - may store session name or reference class for brokers casepublic org.eclipse.persistence.internal.databaseaccess.Platform getPlatform(Class domainClass)
getPlatform in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplpublic DatabaseQuery getQuery(String name)
public DatabaseQuery getQuery(String name, Vector arguments)
getQuery in class org.eclipse.persistence.internal.sessions.AbstractSessionAbstractSession.getQuery(String)public org.eclipse.persistence.internal.sessions.AbstractSession getSessionForClass(Class domainClass) throws ValidationException
getSessionForClass in class org.eclipse.persistence.internal.sessions.AbstractSessionValidationExceptionpublic org.eclipse.persistence.internal.sessions.AbstractSession getSessionForName(String name) throws ValidationException
ValidationExceptionpublic Map<String,org.eclipse.persistence.internal.sessions.AbstractSession> getSessionsByName()
public void initializeDescriptors()
initializeDescriptors in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplpublic void initializeIdentityMapAccessor()
initializeIdentityMapAccessor in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic Object internalExecuteQuery(DatabaseQuery query, org.eclipse.persistence.internal.sessions.AbstractRecord row) throws DatabaseException, QueryException
internalExecuteQuery in class org.eclipse.persistence.internal.sessions.AbstractSessionDatabaseExceptionQueryExceptionpublic boolean isBroker()
isBroker in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic boolean isClientSessionBroker()
public boolean isConnected()
isConnected in interface SessionisConnected in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic boolean isServerSessionBroker()
public boolean isSessionBroker()
isSessionBroker in interface SessionisSessionBroker in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic void login()
throws DatabaseException
login in interface DatabaseSessionlogin in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplDatabaseExceptionDatabaseSessionImpl.login(Login)public void login(String userName, String password) throws DatabaseException
login in interface DatabaseSessionlogin in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplDatabaseExceptionpublic void logout()
throws DatabaseException
logout in interface DatabaseSessionlogout in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplEclipseLinkException - if a transaction is active, you must rollback any active transaction before logout.DatabaseException - the database will also raise an error if their is an active transaction,
or a general error occurs.public void registerSession(String name, org.eclipse.persistence.internal.sessions.AbstractSession session)
public void registerSession(String name, Session session)
public void internalRegisterSession(String name, org.eclipse.persistence.internal.sessions.AbstractSession session)
public void release()
public void setIntegrityChecker(IntegrityChecker integrityChecker)
setIntegrityChecker in interface SessionsetIntegrityChecker in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic void setSessionLog(SessionLog log)
setSessionLog in interface SessionsetSessionLog in class org.eclipse.persistence.internal.sessions.AbstractSession#logMessages()public void setLog(Writer log)
public void setProfiler(SessionProfiler profiler)
setProfiler in interface SessionsetProfiler in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic void setSessionsByName(Map sessionsByName)
public void setSynchronized(boolean synched)
setSynchronized in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic void writesCompleted()
writesCompleted in class org.eclipse.persistence.internal.sessions.AbstractSessionpublic void initializeSequencing()
initializeSequencing in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplpublic org.eclipse.persistence.internal.sequencing.Sequencing getSequencing()
getSequencing in class org.eclipse.persistence.internal.sessions.DatabaseSessionImplpublic int howManySequencingCallbacks()
public boolean isSequencingCallbackRequired()
isSequencingCallbackRequired in class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl