DatasourceAccessor is an abstract implementation
of the Accessor interface providing common functionality to the concrete database and EIS accessors.
It is responsible for
connecting,
transactions,
call execution
Call, Login
| Modifier and Type | Field and Description |
|---|---|
| protected int | callCount
Keep track of the number of concurrent active calls. |
| protected transient AbstractSession | currentSession
Used only in externalConnectionPooling case. |
| protected ConnectionCustomizer | customizer
Allows session-specific connection customization. |
| protected Object | datasourceConnection
Store the reference to the driver level connection. |
| protected boolean | isConnected
Keep track of whether the accessor is "connected". |
| protected boolean | isInTransaction
Keep track if the accessor is within a transaction context |
| protected boolean | isValid
This attribute is used to determine if the connection should be returned to the pool or removed from the pool and closed. |
| protected Login | login
Store the login information that connected this accessor. |
| protected DatasourcePlatform | platform
This is also required to ensure all accessors for a session are using the same platform. |
| protected ConnectionPool | |
| protected boolean | possibleFailure
This attribute is used to track failures on an accessor that may be communication based. |
| public static final String | |
| public int | readStatementsCount
Keep track of the number of the read statement that being executed. |
| protected transient SequencingCallback | sequencingCallback
During (not external) transaction, SequencingManager may set SequencingCallback on the accessor, The callback's only method is called when transaction commits, after transaction is completed the callback is discarded. |
| public static boolean | shouldCheckConnection
Back-door to allow isConnect checks. |
| public static final String | |
| public int | storedProcedureStatementsCount
Keep track of the number of the storedprocedure statement that being executed. |
| protected boolean | usesExternalConnectionPooling
PERF: Cache connection pooling flag. |
| public static final String | |
| public int | writeStatementsCount
Keep track of the number of the write statement that being executed. |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| protected abstract void | |
| protected abstract void | |
| protected abstract Object | basicExecuteCall(Call call, AbstractRecord row, AbstractSession session)
Execute the call to driver level datasource. |
| protected abstract void | |
| public void | beginTransaction(AbstractSession session)
Implements org. |
| protected abstract void | buildConnectLog(AbstractSession session)
Build a log string of any driver metadata that can be obtained. |
| public Object | clone()
Overrides java. Implements org. |
| public void | closeConnection()
Implements org. |
| protected abstract void | |
| public void | closeJTSConnection()
Implements org. |
| public void | commitTransaction(AbstractSession session)
Implements org. |
| public void | connect(Login login, AbstractSession session)
Implements org. |
| protected void | |
| public void | createCustomizer(AbstractSession session)
Implements org. |
| public synchronized void | decrementCallCount()
Implements org. |
| public void | disconnect(AbstractSession session)
Implements org. |
| public Object | Returns: depending of the type either the row count, row or vector of rows.Implements org. |
| public void | flushSelectCalls(AbstractSession session)
Implements org. |
| public int | getCallCount()
Implements org. |
| public Vector | getColumnInfo(String catalog, String schema, String tableName, String columnName, AbstractSession session)
Implements org. |
| public Vector | getColumnInfo(String tableName, String columnName, AbstractSession session)
Implements org. Accessor.
|
| public Connection | getConnection()
Implements org. |
| public Object | getDatasourceConnection()
Implements org. |
| public DatasourcePlatform | |
| public Login | |
| public ConnectionPool | getPool()
Implements org. |
| public int | |
| public SequencingCallback | getSequencingCallback(SequencingCallbackFactory sequencingCallbackFactory)
Implements org. |
| public int | |
| public Vector | getTableInfo(String catalog, String schema, String tableName, String[] types, AbstractSession session)
Implements org. |
| public Vector | getTableInfo(String tableName, String[] types, AbstractSession session)
Implements org. Accessor.
|
| public int | |
| public synchronized void | incrementCallCount(AbstractSession session)
Implements org. |
| public boolean | isConnected()
Implements org. |
| protected abstract boolean | |
| public boolean | isInTransaction()
Implements org. |
| public boolean | |
| public boolean | isValid()
Implements org. |
| protected void | reconnect(AbstractSession session)
Attempt to save some of the cost associated with getting a fresh connection. |
| public void | reestablishConnection(AbstractSession session)
Implements org. |
| protected void | |
| public void | releaseCustomizer()
Implements org. |
| public void | releaseCustomizer(AbstractSession session)
Implements org. |
| public void | reset()
Implements org. |
| public void | rollbackTransaction(AbstractSession session)
Implements org. |
| protected void | |
| protected void | setCustomizer(ConnectionCustomizer newCustomizer)
Set customizer, customize the connection if it's available. |
| protected void | setDatasourceConnection(Object connection)
If client requires to manually set connection they can use the connection manager. |
| public void | |
| protected void | |
| protected void | |
| public void | setIsValid(boolean isValid)
Implements org. |
| protected void | |
| public void | setPool(ConnectionPool pool)
Implements org. |
| public void | |
| public boolean | usesExternalConnectionPooling()
Implements org. |
| public boolean | usesExternalTransactionController()
Implements org. |
| public void | writesCompleted(AbstractSession session)
Implements org. |
| callCount | back to summary |
|---|---|
| protected int callCount Keep track of the number of concurrent active calls. This is used for connection pooling for loadbalancing and for external connection pooling. | |
| currentSession | back to summary |
|---|---|
| protected transient AbstractSession currentSession Used only in externalConnectionPooling case. Indicates which session is currently using connection. Allows to rise appropriate session's event when connection is already/still alive. Events will be risen when ClientSession or DatabaseSession acquires connection in the beginning and releases connection in the end of transaction (in afterCompletion in jta case). In case the session requires exclusive connection (ExclusiveIsolatedClientSession) the events will be risen every time the session acquires or releases connection - which is a rare event - the connection is kept for the duration of jta transaction, after jta transaction is completed the new connection is acquired on a first query execution and kept until the next beginTransaction call. In non-jta case the connection is acquired for session's life and release only by session's release. Note that the attribute is nullified only in one place - by closeConnection method. | |
| customizer | back to summary |
|---|---|
| protected ConnectionCustomizer customizer Allows session-specific connection customization. | |
| datasourceConnection | back to summary |
|---|---|
| protected Object datasourceConnection Store the reference to the driver level connection. | |
| isConnected | back to summary |
|---|---|
| protected boolean isConnected Keep track of whether the accessor is "connected". | |
| isInTransaction | back to summary |
|---|---|
| protected boolean isInTransaction Keep track if the accessor is within a transaction context | |
| isValid | back to summary |
|---|---|
| protected boolean isValid This attribute is used to determine if the connection should be returned to the pool or removed from the pool and closed. It will be set to false if an exception occurs during Call execution. | |
| login | back to summary |
|---|---|
| protected Login login Store the login information that connected this accessor. | |
| platform | back to summary |
|---|---|
| protected DatasourcePlatform platform This is also required to ensure all accessors for a session are using the same platform. | |
| pool | back to summary |
|---|---|
| protected ConnectionPool pool | |
| possibleFailure | back to summary |
|---|---|
| protected boolean possibleFailure This attribute is used to track failures on an accessor that may be communication based. If a failure is detected executing a call with a query timeout this flag is set. If an error happens twice in a row on the same accessor then that accessor will be checked for a comm error. If there is no query timeout then the flag is not set and the accessor will be checked immediately. | |
| READ_STATEMENTS_COUNT_PROPERTY | back to summary |
|---|---|
| public static final String READ_STATEMENTS_COUNT_PROPERTY | |
| readStatementsCount | back to summary |
|---|---|
| public int readStatementsCount Keep track of the number of the read statement that being executed. | |
| sequencingCallback | back to summary |
|---|---|
| protected transient SequencingCallback sequencingCallback During (not external) transaction, SequencingManager may set SequencingCallback on the accessor, The callback's only method is called when transaction commits, after transaction is completed the callback is discarded. | |
| shouldCheckConnection | back to summary |
|---|---|
| public static boolean shouldCheckConnection Back-door to allow isConnect checks. Since we now support fail-over and retry, removing old isConnected usage which can cause major performance issues (on Sybase), and minor ones in general. | |
| STOREDPROCEDURE_STATEMENTS_COUNT_PROPERTY | back to summary |
|---|---|
| public static final String STOREDPROCEDURE_STATEMENTS_COUNT_PROPERTY | |
| storedProcedureStatementsCount | back to summary |
|---|---|
| public int storedProcedureStatementsCount Keep track of the number of the storedprocedure statement that being executed. | |
| usesExternalConnectionPooling | back to summary |
|---|---|
| protected boolean usesExternalConnectionPooling PERF: Cache connection pooling flag. | |
| WRITE_STATEMENTS_COUNT_PROPERTY | back to summary |
|---|---|
| public static final String WRITE_STATEMENTS_COUNT_PROPERTY | |
| writeStatementsCount | back to summary |
|---|---|
| public int writeStatementsCount Keep track of the number of the write statement that being executed. | |
| DatasourceAccessor | back to summary |
|---|---|
| protected DatasourceAccessor() Default Constructor. | |
| basicBeginTransaction | back to summary |
|---|---|
| protected abstract void basicBeginTransaction(AbstractSession session) Begin the driver level transaction. | |
| basicCommitTransaction | back to summary |
|---|---|
| protected abstract void basicCommitTransaction(AbstractSession session) Commit the driver level transaction. | |
| basicExecuteCall | back to summary |
|---|---|
| protected abstract Object basicExecuteCall(Call call, AbstractRecord row, AbstractSession session) Execute the call to driver level datasource. | |
| basicRollbackTransaction | back to summary |
|---|---|
| protected abstract void basicRollbackTransaction(AbstractSession session) Rollback the driver level transaction. | |
| beginTransaction | back to summary |
|---|---|
| public void beginTransaction(AbstractSession session) throws DatabaseException Implements org. Begin a transaction on the database. If not using managed transaction begin a local transaction.
| |
| buildConnectLog | back to summary |
|---|---|
| protected abstract void buildConnectLog(AbstractSession session) Build a log string of any driver metadata that can be obtained. | |
| clone | back to summary |
|---|---|
| public Object clone() Overrides java. Implements org. Clone the accessor.
| |
| closeConnection | back to summary |
|---|---|
| public void closeConnection() Implements org. Close the accessor's connection. This is used only for external connection pooling when it is intended for the connection to be reconnected in the future.
| |
| closeDatasourceConnection | back to summary |
|---|---|
| protected abstract void closeDatasourceConnection() Close the connection to the driver level datasource. | |
| closeJTSConnection | back to summary |
|---|---|
| public void closeJTSConnection() Implements org. Called from beforeCompletion external transaction synchronization listener callback to close the external connection corresponding to the completing external transaction. Final sql calls could be sent through the connection by this method before it closes the connection.
| |
| commitTransaction | back to summary |
|---|---|
| public void commitTransaction(AbstractSession session) throws DatabaseException Implements org. Commit a transaction on the database. If using non-managed transaction commit the local transaction.
| |
| connect | back to summary |
|---|---|
| public void connect(Login login, AbstractSession session) throws DatabaseException Implements org. Connect to the datasource. Through using a CCI ConnectionFactory. Catch exceptions and re-throw as EclipseLink exceptions.
| |
| connectInternal | back to summary |
|---|---|
| protected void connectInternal(Login login, AbstractSession session) throws DatabaseException Connect to the database. Exceptions are caught and re-thrown as EclipseLink exceptions. | |
| createCustomizer | back to summary |
|---|---|
| public void createCustomizer(AbstractSession session) Implements org. Attempts to create ConnectionCustomizer. If created the customizer is cached by the accessor. Called by the owner of accessor (DatabaseSession, ServerSession through ConnectionPool) just once, typically right after the accessor is created. Also called by ClientSession when it acquires write accessor. If accessor already has a customizer set by ConnectionPool then ClientSession's customizer compared with the existing one and if they are not equal (don't produce identical customization) then the new customizer set onto accessor, caching the old customizer so that it could be restored later.
| |
| decrementCallCount | back to summary |
|---|---|
| public synchronized void decrementCallCount() Implements org. Used for load balancing and external pooling.
| |
| disconnect | back to summary |
|---|---|
| public void disconnect(AbstractSession session) throws DatabaseException Implements org. Disconnect from the datasource.
| |
| executeCall | back to summary |
|---|---|
| public Object executeCall(Call call, AbstractRecord translationRow, AbstractSession session) throws DatabaseException Implements org. Execute the call. | |
| flushSelectCalls | back to summary |
|---|---|
| public void flushSelectCalls(AbstractSession session) Implements org. Added as a result of Bug 2804663 - satisfy the Accessor interface implementation.
| |
| getCallCount | back to summary |
|---|---|
| public int getCallCount() Implements org. Used for load balancing and external pooling.
| |
| getColumnInfo | back to summary |
|---|---|
| public Vector Implements org. Return column information for the specified database objects.
| |
| getColumnInfo | back to summary |
|---|---|
| public Vector Implements org. Doc from org. Return the column metadata for the specified
selection criteria limited to the context of the current
| |
| getConnection | back to summary |
|---|---|
| public Connection getConnection() Implements org. Helper method to return the JDBC connection for DatabaseAccessor. Was going to deprecate this, but since most clients are JDBC this is useful.
| |
| getDatasourceConnection | back to summary |
|---|---|
| public Object getDatasourceConnection() Implements org. Return the driver level connection.
| |
| getDatasourcePlatform | back to summary |
|---|---|
| public DatasourcePlatform getDatasourcePlatform() Return the platform. | |
| getLogin | back to summary |
|---|---|
| public Login getLogin() Return the login | |
| getPool | back to summary |
|---|---|
| public ConnectionPool getPool() Implements org. Return the associated connection pool this connection was obtained from.
| |
| getReadStatementsCount | back to summary |
|---|---|
| public int getReadStatementsCount() Return the number of read statements. | |
| getSequencingCallback | back to summary |
|---|---|
| public SequencingCallback getSequencingCallback(SequencingCallbackFactory sequencingCallbackFactory) Implements org. Return sequencing callback.
| |
| getStoredProcedureStatementsCount | back to summary |
|---|---|
| public int getStoredProcedureStatementsCount() Return the number of stored procedure call. | |
| getTableInfo | back to summary |
|---|---|
| public Vector Implements org. Return table information for the specified database objects.
| |
| getTableInfo | back to summary |
|---|---|
| public Vector Implements org. Doc from org. Return the table metadata for the specified
selection criteria limited to the context of the current
| |
| getWriteStatementsCount | back to summary |
|---|---|
| public int getWriteStatementsCount() Return the number of write statements. | |
| incrementCallCount | back to summary |
|---|---|
| public synchronized void incrementCallCount(AbstractSession session) Implements org. Used for load balancing and external pooling.
| |
| isConnected | back to summary |
|---|---|
| public boolean isConnected() Implements org. Return true if the accessor is currently connected to a data source. Return false otherwise.
| |
| isDatasourceConnected | back to summary |
|---|---|
| protected abstract boolean isDatasourceConnected() Return if the driver level connection is connected. | |
| isInTransaction | back to summary |
|---|---|
| public boolean isInTransaction() Implements org. Return the transaction status of the receiver.
| |
| isPossibleFailure | back to summary |
|---|---|
| public boolean isPossibleFailure() | |
| isValid | back to summary |
|---|---|
| public boolean isValid() Implements org. Returns true if this Accessor can continue to be used. This will be false if a communication failure occurred during a call execution. In the case of an invalid accessor the Accessor will not be returned to the pool.
| |
| reconnect | back to summary |
|---|---|
| protected void reconnect(AbstractSession session) throws DatabaseException Attempt to save some of the cost associated with getting a fresh connection. Assume the DatabaseDriver has been cached, if appropriate. Note Connections that are participating in transactions will not be refreshed.^M | |
| reestablishConnection | back to summary |
|---|---|
| public void reestablishConnection(AbstractSession session) throws DatabaseException Implements org. PUBLIC: Reconnect to the database. This can be used if the connection was disconnected or timedout. This ensures that the security is checked as it is public. Because the messages can take a long time to build, pre-check whether messages should be logged.
| |
| reestablishCustomizer | back to summary |
|---|---|
| protected void reestablishCustomizer() This method is called by reestablishConnection. Nothing needs to be done in case customize is not active (customization hasn't been applied yet). to repair existing customizer after connection became invalid. However if connection has been customized then if connection is still there and deemed to be valid - clear customization. Otherwise (or if clear fails) remove customizer and set its prevCustomizer as a new customizer, then re-create customizer using the same session as the original one. | |
| releaseCustomizer | back to summary |
|---|---|
| public void releaseCustomizer() Implements org. Clear customizer if it's active and set it to null. Called by the same object that has created customizer (DatabaseSession, ConnectionPool) when the latter is no longer required, typically before releasing the accessor. Ignored if there's no customizer.
| |
| releaseCustomizer | back to summary |
|---|---|
| public void releaseCustomizer(AbstractSession session) Implements org. Clear and remove customizer if its session is the same as the passed one; in case prevCustomizer exists set it as a new customizer. Called when ClientSession releases write accessor: if the customizer was created by the ClientSession it's removed, and the previous customizer (that ConnectionPool had set) is brought back; otherwise the customizer (created by ConnectionPool) is kept. Ignored if there's no customizer.
| |
| reset | back to summary |
|---|---|
| public void reset() Implements org. Reset statement count.
| |
| rollbackTransaction | back to summary |
|---|---|
| public void rollbackTransaction(AbstractSession session) throws DatabaseException Implements org. Rollback the transaction on the datasource. If not using managed transaction rollback the local transaction.
| |
| setCallCount | back to summary |
|---|---|
| protected void setCallCount(int callCount) Used for load balancing and external pooling. | |
| setCustomizer | back to summary |
|---|---|
| protected void setCustomizer(ConnectionCustomizer newCustomizer) Set customizer, customize the connection if it's available. | |
| setDatasourceConnection | back to summary |
|---|---|
| protected void setDatasourceConnection(Object connection) If client requires to manually set connection they can use the connection manager. | |
| setDatasourcePlatform | back to summary |
|---|---|
| public void setDatasourcePlatform(DatasourcePlatform platform) Set the platform. This should be set to the session's platform, not the connections which may not be configured correctly. | |
| setIsConnected | back to summary |
|---|---|
| protected void setIsConnected(boolean isConnected) Set whether the accessor has a connection to the "data store". | |
| setIsInTransaction | back to summary |
|---|---|
| protected void setIsInTransaction(boolean value) Set the transaction transaction status of the receiver. | |
| setIsValid | back to summary |
|---|---|
| public void setIsValid(boolean isValid) Implements org. This should be set to false if a communication failure occurred during a call execution. In the case of an invalid accessor the Accessor will not be returned to the pool.
| |
| setLogin | back to summary |
|---|---|
| protected void setLogin(Login login) SECURE: set the login | |
| setPool | back to summary |
|---|---|
| public void setPool(ConnectionPool pool) Implements org. Set the associated connection pool this connection was obtained from.
| |
| setPossibleFailure | back to summary |
|---|---|
| public void setPossibleFailure(boolean possibleFailure) | |
| usesExternalConnectionPooling | back to summary |
|---|---|
| public boolean usesExternalConnectionPooling() Implements org. Return true if some external connection pool is in use.
| |
| usesExternalTransactionController | back to summary |
|---|---|
| public boolean usesExternalTransactionController() Implements org. Return true if some external transaction service is controlling transactions.
| |
| writesCompleted | back to summary |
|---|---|
| public void writesCompleted(AbstractSession session) Implements org. This method will be called after a series of writes have been issued to mark where a particular set of writes has completed. It will be called from commitTransaction and may be called from writeChanges. Its main purpose is to ensure that the batched statements have been executed
| |