From 4822a461da5ca90af684862b1c9e0751115f7d6b Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 11 Jul 2011 02:22:36 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=B9=B6=E5=8F=91=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=97=B6=E5=80=99=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@361 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../java/com/alibaba/druid/proxy/DruidDriver.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/alibaba/druid/proxy/DruidDriver.java b/src/main/java/com/alibaba/druid/proxy/DruidDriver.java index b7cd804472..a9aa765d50 100644 --- a/src/main/java/com/alibaba/druid/proxy/DruidDriver.java +++ b/src/main/java/com/alibaba/druid/proxy/DruidDriver.java @@ -46,7 +46,7 @@ public class DruidDriver implements Driver, DruidDriverMBean { private final static DruidDriver instance = new DruidDriver(); - private final static ConcurrentMap proxyDataSources = new ConcurrentHashMap(); + private final static ConcurrentMap proxyDataSources = new ConcurrentHashMap(); private final static AtomicInteger dataSourceIdSeed = new AtomicInteger(0); public final static String DEFAULT_PREFIX = "jdbc:wrap-jdbc:"; @@ -171,7 +171,7 @@ public class DruidDriver implements Driver, DruidDriverMBean { config.setName(name); restUrl = restUrl.substring(pos + 1); } - + if (restUrl.startsWith(JMX_PREFIX)) { int pos = restUrl.indexOf(':', JMX_PREFIX.length()); String jmxOption = restUrl.substring(JMX_PREFIX.length(), pos); @@ -192,17 +192,18 @@ public class DruidDriver implements Driver, DruidDriverMBean { Driver rawDriver = createDriver(config.getRawDriverClassName()); DataSourceProxyImpl newDataSource = new DataSourceProxyImpl(rawDriver, config); - - DataSourceProxy oldDataSource = proxyDataSources.putIfAbsent(url, newDataSource); // 多线程处理需要 - if (oldDataSource == null) { - // 放进去的线程负责初始化 + { int dataSourceId = createDataSourceId(); newDataSource.setId(dataSourceId); for (Filter filter : config.getFilters()) { filter.init(newDataSource); } - + } + + DataSourceProxy oldDataSource = proxyDataSources.putIfAbsent(url, newDataSource); // 多线程处理需要 + if (oldDataSource == null) { + // 放进去的线程负责注册MBean if (config.isJmxOption()) { JMXUtils.register("com.alibaba.druid:type=JdbcStat", JdbcStatManager.getInstance()); }