mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
support useLocalSessionState config, default is true
This commit is contained in:
@@ -231,12 +231,24 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements
|
||||
|
||||
private Boolean useUnfairLock = null;
|
||||
|
||||
private boolean useLocalSessionState = true;
|
||||
|
||||
public DruidAbstractDataSource(boolean lockFair){
|
||||
lock = new ReentrantLock(lockFair);
|
||||
|
||||
notEmpty = lock.newCondition();
|
||||
empty = lock.newCondition();
|
||||
}
|
||||
|
||||
public boolean isUseLocalSessionState() {
|
||||
return useLocalSessionState;
|
||||
}
|
||||
|
||||
public void setUseLocalSessionState(boolean useLocalSessionState) {
|
||||
this.useLocalSessionState = useLocalSessionState;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean isOracle() {
|
||||
return isOracle;
|
||||
|
||||
@@ -195,18 +195,22 @@ public final class DruidConnectionHolder {
|
||||
// reset default settings
|
||||
if (underlyingReadOnly != defaultReadOnly) {
|
||||
conn.setReadOnly(defaultReadOnly);
|
||||
underlyingReadOnly = defaultReadOnly;
|
||||
}
|
||||
|
||||
if (underlyingHoldability != defaultHoldability) {
|
||||
conn.setHoldability(defaultHoldability);
|
||||
underlyingHoldability = defaultHoldability;
|
||||
}
|
||||
|
||||
if (underlyingTransactionIsolation != defaultTransactionIsolation) {
|
||||
conn.setTransactionIsolation(defaultTransactionIsolation);
|
||||
underlyingTransactionIsolation = defaultTransactionIsolation;
|
||||
}
|
||||
|
||||
if (underlyingAutoCommit != defaultAutoCommit) {
|
||||
conn.setAutoCommit(defaultAutoCommit);
|
||||
underlyingAutoCommit = defaultAutoCommit;
|
||||
}
|
||||
|
||||
connectionEventListeners.clear();
|
||||
|
||||
@@ -671,6 +671,14 @@ public class DruidPooledConnection extends PoolableWrapper implements javax.sql.
|
||||
@Override
|
||||
public void setAutoCommit(boolean autoCommit) throws SQLException {
|
||||
checkState();
|
||||
|
||||
boolean useLocalSessionState = holder.getDataSource().isUseLocalSessionState();
|
||||
|
||||
if (useLocalSessionState) {
|
||||
if (autoCommit == holder.isUnderlyingAutoCommit()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
conn.setAutoCommit(autoCommit);
|
||||
|
||||
Reference in New Issue
Block a user