Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
ManagedConnection.java has (line 155)
================
protected class CompletionListener implements TransactionContextListener {
public void afterCompletion(TransactionContext transactionContext, boolean commited) {
if (transactionContext == transactionContext)
}
}
The transactionContext parameter is hiding the field transactionContext.
The parameter should be renamed, as at present the comparison will always succeed.
PoolingDriver:
===========
the following fields should be final:
_pools
MAJOR_VERSION
MINOR_VERSION
URL_PREFIX
URL_PREFIX_LEN
In fact the last four should probably be private as well
toString() should not return null
CPDSConnectionFactory
===================
setPool() is synch; getPool() is not. Either make both sync or make _pool volatile.
setRollbackAfterValidation is synch, however the field it sets - _rollbackAfterValidation - is not read using synch.
Either synch the read operation - or better here - drop the synch, and make the field volatile
Same applies to setValidationQuery() and _validationQuery
KeyedCPDSConnectionFactory
========================
setRollbackAfterValidation is synch, however the field it sets - _rollbackAfterValidation - is not read using synch.
Either synch the read operation - or better here - drop the synch, and make the field volatile
Same applies to setValidationQuery() and _validationQuery
PoolableConnectionFactory
======================
setPool() is synch; getPool() is not. Either make both sync or make _pool volatile.