Module org.eclipse.persistence.core
Class DistributedSession
java.lang.Object
org.eclipse.persistence.internal.core.sessions.CoreAbstractSession<ClassDescriptor,Login,Platform,Project,SessionEventManager>
org.eclipse.persistence.internal.sessions.AbstractSession
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl
org.eclipse.persistence.sessions.remote.DistributedSession
- All Implemented Interfaces:
Serializable
,Cloneable
,CoreSession<ClassDescriptor,
,Login, Platform, Project, SessionEventManager> CommandProcessor
,DatabaseSession
,Session
- Direct Known Subclasses:
RemoteSession
Purpose: Super class to all remote client session's.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
Cache if default classes have been read from server.protected boolean
Define if meta-data is initialized locally, or serialized from the server.protected RemoteConnection
Connection to remote persistence service.Fields inherited from class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl
connectedTime, databaseEventListener, isLoggedIn, sequencingHome, serverPlatform, tuner
Fields inherited from class org.eclipse.persistence.internal.sessions.AbstractSession
accessors, activeCommandThreads, attributeGroups, broker, commandManager, commitManager, defaultReferenceMode, deferredEvents, descriptors, eventManager, exceptionHandler, externalTransactionController, identityMapAccessor, injectionManager, integrityChecker, isConcurrent, isExecutingEvents, isFinalizersEnabled, isInBroker, isInProfile, isLoggingOff, isSynchronized, jpaQueriesProcessed, lastDescriptorAccessed, logSessionString, metadatalistener, multitenantContextProperties, name, numberOfActiveUnitsOfWork, objectsLockedForClone, partitioningPolicy, pessimisticLockTimeoutDefault, pessimisticLockTimeoutUnitDefault, platform, profiler, project, properties, queries, queryBuilder, queryTimeoutDefault, queryTimeoutUnitDefault, serializer, sessionLog, shouldCheckWriteLock, shouldOptimizeResultSetAccess, shouldPropagateChanges, staticMetamodelClasses, tablePerTenantDescriptors, tablePerTenantQueries, tolerateInvalidJPQL, transactionMutex, wasJTSTransactionInternallyStarted
Fields inherited from interface org.eclipse.persistence.sessions.coordination.CommandProcessor
LOG_DEBUG, LOG_ERROR, LOG_INFO, LOG_WARNING
-
Constructor Summary
ModifierConstructorDescriptionprotected
DistributedSession
(int nothing) INTERNAL: Create a blank session, used for proxy session.protected
DistributedSession
(RemoteConnection remoteConnection) PUBLIC: Creates a DistributedSession. -
Method Summary
Modifier and TypeMethodDescriptionabstract UnitOfWorkImpl
PUBLIC: Return a unit of work for this session.void
PUBLIC: Start a transaction on the server.void
PUBLIC: Commit a transaction on the server.void
connect()
INTERNAL: Connect not required.INTERNAL: Return remote cursor stream.INTERNAL: Return remote scrollable cursorvoid
INTERNAL: Disconnect not required.executeQuery
(String queryName) PUBLIC: Execute the pre-defined query by name and return the result.executeQuery
(String queryName, Class<?> domainClass) PUBLIC: Execute the pre-defined query by name and return the result.executeQuery
(String queryName, Class<?> domainClass, Vector argumentValues) PUBLIC: Execute the pre-defined query by name and return the result.executeQuery
(String queryName, Vector argumentValues) PUBLIC: Execute the pre-defined query by name and return the result.abstract Object
executeQuery
(DatabaseQuery query) Execute the database query.executeQuery
(DatabaseQuery query, AbstractRecord row) INTERNAL: Execute the database query.INTERNAL: CR#2751 Returns the set of read-only classes for the receiver.getDescriptor
(Class<?> domainClass) INTERNAL: Return the table descriptor specified for the class.getDescriptorCorrespondingTo
(ClassDescriptor descriptor) INTERNAL: Return the descriptor.getDescriptorForAlias
(String alias) INTERNAL: Return the table descriptor specified for the class.abstract Object
getObjectCorrespondingTo
(Object serverSideDomainObject, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query) INTERNAL: Return the corresponding objects from the remote session for the objects read from the server.abstract Object
getObjectsCorrespondingToAll
(Object serverSideDomainObjects, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, ContainerPolicy containerPolicy) INTERNAL: Return the corresponding objects from the remote session for the objects read from the server.INTERNAL: Return the remote connection.boolean
hasCorrespondingDescriptor
(ClassDescriptor descriptor) INTERNAL: Checks if the descriptor exists or not.void
INTERNAL: Set up the IdentityMapManager.abstract Object
instantiateRemoteValueHolderOnServer
(RemoteValueHolder remoteValueHolder) INTERNAL: This will instantiate value holder on the server.boolean
PUBLIC: Return if this session is connected to the server.boolean
INTERNAL: Return if this session is a distributed session.boolean
ADVANCED: Return if the descriptors and meta-data should be serialized from the server, or if they will be provided locally.boolean
INTERNAL: Return if this session is a remote session.void
login()
PUBLIC: Connect to the database using the predefined login.void
PUBLIC: Connect to the database using the predefined login.void
logout()
PUBLIC: Logout the session, close the remote connection and release the hold resourcesvoid
privilegedAddDescriptor
(ClassDescriptor descriptor) INTERNAL: You cannot add descriptors to a remote session.void
PUBLIC: Rollback a transaction on the server.void
setIsMetadataRemote
(boolean isMetadataRemote) ADVANCED: Set if the descriptors and meta-data should be serialized from the server, or if they will be provided locally.void
setRemoteConnection
(RemoteConnection remoteConnection) INTERNAL: Set the remote connection.toString()
PUBLIC: Avoid printing the accessor and platform.Methods inherited from class org.eclipse.persistence.internal.sessions.DatabaseSessionImpl
addDescriptor, addDescriptors, addDescriptors, addDescriptorsToSequencing, addSequence, finalize, getConnectedTime, getDatabaseEventListener, getDatasourcePlatform, getPlatform, getPlatform, getReadLogin, getSequencing, getSequencingControl, getSequencingHome, getServerPlatform, getTuner, initializeConnectedTime, initializeDescriptorIfSessionAlive, initializeDescriptors, initializeDescriptors, initializeDescriptors, initializeDescriptors, initializeDescriptors, initializeSequencing, isDatabaseSession, isLoggedIn, isProtectedSession, isSequencingCallbackRequired, login, login, postConnectDatasource, postLogin, preConnectDatasource, releaseJTSConnection, retryQuery, setDatabaseEventListener, setDatasourceAndInitialize, setOrDetectDatasource, setSequencingHome, setServerPlatform, setTuner, writeAllObjects, writeAllObjects
Methods inherited from class org.eclipse.persistence.internal.sessions.AbstractSession
acquireHistoricalSession, acquireNonSynchronizedUnitOfWork, acquireNonSynchronizedUnitOfWork, acquireRepeatableWriteUnitOfWork, acquireUnitOfWork, addAlias, addJPAQuery, addJPATablePerTenantQuery, addMultitenantContextProperty, addQuery, addQuery, addQuery, addStaticMetamodelClass, addTablePerTenantDescriptor, addTablePerTenantQuery, basicBeginTransaction, basicBeginTransaction, basicCommitTransaction, basicExecuteCall, basicRollbackTransaction, beginExternalTransaction, buildDefaultQueryBuilder, checkAndRefreshInvalidObject, checkHierarchyForDescriptor, cleanUpInjectionManager, clearDescriptors, clearIntegrityChecker, clearLastDescriptorAccessed, clearProfile, clone, commitExternalTransaction, compareObjects, compareObjectsDontMatch, config, containsQuery, copy, copy, copyDescriptorNamedQueries, copyDescriptorsFromProject, copyInternal, copyReadOnlyClasses, createCloneQueryValueHolder, createCloneTransformationValueHolder, createInjectionManager, createProtectedInstanceFromCachedData, deferEvent, deleteAllObjects, deleteObject, doesObjectExist, dontLogMessages, endOperationProfile, endOperationProfile, executeCall, executeDeferredEvents, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, fine, finer, finest, getAccessor, getAccessors, getAccessors, getActiveCommandThreads, getActiveSession, getActiveUnitOfWork, getAliasDescriptors, getAllQueries, getAsOfClause, getAttributeGroups, getBroker, getCacheKeyFromTargetSessionForMerge, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getCommandManager, getCommitManager, getDatasourceLogin, getDefaultReferenceMode, getDescriptor, getDescriptors, getEventManager, getExceptionHandler, getExceptionHandlerClass, getExecutionSession, getExternalTransactionController, getId, getIdentityMapAccessor, getIdentityMapAccessorInstance, getInjectionManager, getIntegrityChecker, getJPAQueries, getJPATablePerTenantQueries, getLoader, getLog, getLogin, getLogLevel, getLogLevel, getLogSessionString, getMappedSuperclass, getMultitenantContextProperties, getName, getNextQueryId, getNextSequenceNumberValue, getNumberOfActiveUnitsOfWork, getParent, getParentIdentityMapSession, getParentIdentityMapSession, getParentIdentityMapSession, getPartitioningPolicy, getPessimisticLockTimeoutDefault, getPessimisticLockTimeoutUnitDefault, getProfiler, getProject, getProperties, getProperty, getQueries, getQuery, getQuery, getQuery, getQuery, getQueryBuilder, getQueryTimeoutDefault, getQueryTimeoutUnitDefault, getRefreshMetadataListener, getRootSession, getSerializer, getSessionForClass, getSessionForName, getSessionLog, getSessionTypeString, getStaticMetamodelClass, getTablePerTenantDescriptors, getTablePerTenantQueries, getTransactionMutex, handleException, handleSevere, hasBroker, hasCommitManager, hasDescriptor, hasEventManager, hasExceptionHandler, hasExternalTransactionController, hasProperties, hasTablePerTenantDescriptors, hasTablePerTenantQueries, incrementProfile, incrementProfile, info, insertObject, internalExecuteQuery, isBroker, isClassReadOnly, isClassReadOnly, isClientSession, isConcurrent, isConsideredInvalid, isExclusiveConnectionRequired, isExclusiveIsolatedClientSession, isFinalizersEnabled, isHistoricalSession, isInBroker, isInProfile, isInTransaction, isIsolatedClientSession, isJPAQueriesProcessed, isLoggingOff, isRemoteUnitOfWork, isServerSession, isSessionBroker, isSynchronized, isUnitOfWork, keyFromObject, load, load, log, log, log, log, log, log, log, log, logMessage, logMessage, logThrowable, postAcquireConnection, prepareDatabaseQuery, preReleaseConnection, priviledgedExecuteNonSelectingCall, priviledgedExecuteSelectingCall, processCommand, processJPAQueries, processJPAQuery, readAllObjects, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, readObject, refreshAndLockObject, refreshAndLockObject, refreshObject, registerFinalizer, release, releaseConnectionAfterCall, releaseReadConnection, releaseUnitOfWork, removeProperty, removeQuery, removeQuery, retrieveCacheKey, retryTransaction, rollbackExternalTransaction, setAccessor, setBroker, setCommandManager, setCommitManager, setDatasourceLogin, setDefaultReferenceMode, setEventManager, setExceptionHandler, setExternalTransactionController, setInjectionManager, setIntegrityChecker, setIsConcurrent, setIsFinalizersEnabled, setIsInBroker, setIsInProfile, setJPAQueriesProcessed, setLog, setLoggingOff, setLogin, setLogin, setLogLevel, setName, setNumberOfActiveUnitsOfWork, setPartitioningPolicy, setPessimisticLockTimeoutDefault, setPessimisticLockTimeoutUnitDefault, setProfiler, setProject, setProperties, setProperty, setQueries, setQueryBuilder, setQueryTimeoutDefault, setQueryTimeoutUnitDefault, setRefreshMetadataListener, setSerializer, setSessionLog, setShouldOptimizeResultSetAccess, setShouldPropagateChanges, setSynchronized, setTolerateInvalidJPQL, setTransactionMutex, setWasJTSTransactionInternallyStarted, severe, shouldDisplayData, shouldLog, shouldLogMessages, shouldLogMessages, shouldOptimizeResultSetAccess, shouldPropagateChanges, shouldTolerateInvalidJPQL, startOperationProfile, startOperationProfile, unwrapObject, updateObject, updateProfile, updateTablePerTenantDescriptors, validateCache, validateQuery, verifyDelete, warning, wasJTSTransactionInternallyStarted, wrapObject, writeAllObjectsWithChangeSet, writeObject, writesCompleted
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.persistence.sessions.DatabaseSession
deleteAllObjects, deleteObject, getCommandManager, insertObject, isInTransaction, refreshAndLockObject, refreshAndLockObject, setCommandManager, setDatasourceLogin, setExternalTransactionController, setLogin, setShouldPropagateChanges, shouldPropagateChanges, updateObject, writeObject
Methods inherited from interface org.eclipse.persistence.sessions.Session
acquireHistoricalSession, acquireUnitOfWork, addJPAQuery, addQuery, clearIntegrityChecker, clearProfile, containsQuery, copy, copy, doesObjectExist, dontLogMessages, executeNonSelectingCall, executeNonSelectingSQL, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeQuery, executeSelectingCall, executeSQL, getActiveSession, getActiveUnitOfWork, getAsOfClause, getClassDescriptor, getClassDescriptor, getClassDescriptorForAlias, getDatasourceLogin, getDefaultReferenceMode, getDescriptor, getDescriptors, getEventManager, getExceptionHandler, getExternalTransactionController, getId, getIdentityMapAccessor, getIntegrityChecker, getJPAQueries, getLog, getLogin, getLogLevel, getLogLevel, getName, getNextSequenceNumberValue, getPartitioningPolicy, getProfiler, getProject, getProperties, getProperty, getQueries, getQuery, getQuery, getSerializer, getSessionLog, handleException, handleSevere, hasDescriptor, hasExceptionHandler, hasExternalTransactionController, isClientSession, isFinalizersEnabled, isInProfile, isRemoteUnitOfWork, isServerSession, isSessionBroker, isUnitOfWork, log, logMessage, readAllObjects, readAllObjects, readAllObjects, readObject, readObject, readObject, readObject, refreshObject, release, removeProperty, removeQuery, setDefaultReferenceMode, setExceptionHandler, setIntegrityChecker, setIsFinalizersEnabled, setLog, setLogLevel, setName, setPartitioningPolicy, setProfiler, setProperty, setQueryTimeoutDefault, setQueryTimeoutUnitDefault, setSerializer, setSessionLog, shouldLog, shouldLogMessages, validateCache
-
Field Details
-
remoteConnection
Connection to remote persistence service. -
hasDefaultReadOnlyClasses
protected boolean hasDefaultReadOnlyClassesCache if default classes have been read from server. -
isMetadataRemote
protected boolean isMetadataRemoteDefine if meta-data is initialized locally, or serialized from the server.
-
-
Constructor Details
-
DistributedSession
protected DistributedSession(int nothing) INTERNAL: Create a blank session, used for proxy session. -
DistributedSession
PUBLIC: Creates a DistributedSession.- Parameters:
remoteConnection
- remote session requires a remote connection. This must be accessed remotely from the client through RMI or CORBA.
-
-
Method Details
-
acquireUnitOfWork
PUBLIC: Return a unit of work for this session. The unit of work is an object level transaction that allows a group of changes to be applied as a unit.- Specified by:
acquireUnitOfWork
in interfaceSession
- Overrides:
acquireUnitOfWork
in classAbstractSession
- See Also:
-
beginTransaction
public void beginTransaction()PUBLIC: Start a transaction on the server. A unit of work should normally be used instead of transactions for the remote session.- Specified by:
beginTransaction
in interfaceDatabaseSession
- Overrides:
beginTransaction
in classAbstractSession
- See Also:
-
commitTransaction
public void commitTransaction()PUBLIC: Commit a transaction on the server. A unit of work should normally be used instead of transactions for the remote session.- Specified by:
commitTransaction
in interfaceDatabaseSession
- Overrides:
commitTransaction
in classAbstractSession
-
cursorSelectObjects
INTERNAL: Return remote cursor stream. -
cursorSelectObjects
INTERNAL: Return remote scrollable cursor -
executeQuery
PUBLIC: Execute the pre-defined query by name and return the result. Queries can be pre-defined and named to allow for their reuse. The named query can be defined on the remote session or the server-side session.- Specified by:
executeQuery
in interfaceSession
- Overrides:
executeQuery
in classAbstractSession
- Throws:
DatabaseException
- See Also:
-
executeQuery
PUBLIC: Execute the pre-defined query by name and return the result. Queries can be pre-defined and named to allow for their reuse. The class is the descriptor in which the query was pre-defined. The query is executed on the server-side session.- Specified by:
executeQuery
in interfaceSession
- Overrides:
executeQuery
in classAbstractSession
- Throws:
DatabaseException
- See Also:
-
executeQuery
public Object executeQuery(String queryName, Class<?> domainClass, Vector argumentValues) throws DatabaseException PUBLIC: Execute the pre-defined query by name and return the result. Queries can be pre-defined and named to allow for their reuse. The class is the descriptor in which the query was pre-defined.- Overrides:
executeQuery
in classAbstractSession
- Throws:
DatabaseException
- See Also:
-
executeQuery
PUBLIC: Execute the pre-defined query by name and return the result. Queries can be pre-defined and named to allow for their reuse.- Overrides:
executeQuery
in classAbstractSession
- Throws:
DatabaseException
- See Also:
-
executeQuery
Execute the database query.- Specified by:
executeQuery
in interfaceSession
- Overrides:
executeQuery
in classAbstractSession
- See Also:
-
executeQuery
INTERNAL: Execute the database query.- Overrides:
executeQuery
in classAbstractSession
-
getDefaultReadOnlyClasses
INTERNAL: CR#2751 Returns the set of read-only classes for the receiver. These class come from the Remote connection- Overrides:
getDefaultReadOnlyClasses
in classAbstractSession
- Returns:
- A Vector containing the Java Classes that are currently read-only.
- See Also:
-
getDescriptor
INTERNAL: Return the table descriptor specified for the class.- Specified by:
getDescriptor
in interfaceCoreSession<ClassDescriptor,
Login, Platform, Project, SessionEventManager> - Specified by:
getDescriptor
in interfaceSession
- Overrides:
getDescriptor
in classAbstractSession
-
getDescriptorForAlias
INTERNAL: Return the table descriptor specified for the class.- Specified by:
getDescriptorForAlias
in interfaceSession
- Overrides:
getDescriptorForAlias
in classAbstractSession
- Parameters:
alias
- The descriptor alias.- Returns:
- The descriptor for the alias or
null
if no descriptor was found.
-
getDescriptorCorrespondingTo
INTERNAL: Return the descriptor. -
getObjectCorrespondingTo
public abstract Object getObjectCorrespondingTo(Object serverSideDomainObject, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query) INTERNAL: Return the corresponding objects from the remote session for the objects read from the server. -
getObjectsCorrespondingToAll
public abstract Object getObjectsCorrespondingToAll(Object serverSideDomainObjects, Map<Object, ObjectDescriptor> objectDescriptors, Map<Object, Object> processedObjects, ObjectLevelReadQuery query, ContainerPolicy containerPolicy) INTERNAL: Return the corresponding objects from the remote session for the objects read from the server. -
getRemoteConnection
INTERNAL: Return the remote connection. -
hasCorrespondingDescriptor
INTERNAL: Checks if the descriptor exists or not. -
initializeIdentityMapAccessor
public void initializeIdentityMapAccessor()INTERNAL: Set up the IdentityMapManager. Overrides the default IdentityMapManager- Overrides:
initializeIdentityMapAccessor
in classAbstractSession
-
instantiateRemoteValueHolderOnServer
INTERNAL: This will instantiate value holder on the server. -
isConnected
public boolean isConnected()PUBLIC: Return if this session is connected to the server.- Specified by:
isConnected
in interfaceSession
- Overrides:
isConnected
in classAbstractSession
-
isDistributedSession
public boolean isDistributedSession()INTERNAL: Return if this session is a distributed session.- Specified by:
isDistributedSession
in interfaceSession
- Overrides:
isDistributedSession
in classAbstractSession
-
isRemoteSession
public boolean isRemoteSession()INTERNAL: Return if this session is a remote session.- Specified by:
isRemoteSession
in interfaceSession
- Overrides:
isRemoteSession
in classAbstractSession
-
privilegedAddDescriptor
INTERNAL: You cannot add descriptors to a remote session. This is a internal method used by TopLink -
rollbackTransaction
public void rollbackTransaction()PUBLIC: Rollback a transaction on the server. A unit of work should normally be used instead of transactions for the remote session.- Specified by:
rollbackTransaction
in interfaceDatabaseSession
- Overrides:
rollbackTransaction
in classAbstractSession
-
setRemoteConnection
INTERNAL: Set the remote connection. -
toString
PUBLIC: Avoid printing the accessor and platform.- Overrides:
toString
in classAbstractSession
-
logout
public void logout()PUBLIC: Logout the session, close the remote connection and release the hold resources- Specified by:
logout
in interfaceDatabaseSession
- Overrides:
logout
in classDatabaseSessionImpl
-
isMetadataRemote
public boolean isMetadataRemote()ADVANCED: Return if the descriptors and meta-data should be serialized from the server, or if they will be provided locally. -
setIsMetadataRemote
public void setIsMetadataRemote(boolean isMetadataRemote) ADVANCED: Set if the descriptors and meta-data should be serialized from the server, or if they will be provided locally. -
connect
INTERNAL: Connect not required.- Overrides:
connect
in classDatabaseSessionImpl
- Throws:
DatabaseException
-
disconnect
INTERNAL: Disconnect not required.- Overrides:
disconnect
in classDatabaseSessionImpl
- Throws:
DatabaseException
-
loginAndDetectDatasource
PUBLIC: Connect to the database using the predefined login. During connection, attempt to auto detect the required database platform. This method can be used in systems where for ease of use developers have EclipseLink autodetect the platform. To be safe, however, the platform should be configured directly. The login must have been assigned when or after creating the session.- Overrides:
loginAndDetectDatasource
in classDatabaseSessionImpl
- Throws:
DatabaseException
-
login
PUBLIC: Connect to the database using the predefined login. Obtain the login from the server, as it may have configuration initialized from the database meta-data.- Specified by:
login
in interfaceDatabaseSession
- Overrides:
login
in classDatabaseSessionImpl
- Throws:
DatabaseException
- See Also:
-