Эх сурвалжийг харах

druid替换dbcp

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@7488 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
sunyj 9 жил өмнө
parent
commit
c619f81bea

+ 2 - 2
pom.xml

@@ -186,8 +186,8 @@
 			<artifactId>commons-pool</artifactId>
 			<artifactId>commons-pool</artifactId>
 		</dependency>
 		</dependency>
 		<dependency>
 		<dependency>
-			<groupId>commons-dbcp</groupId>
-			<artifactId>commons-dbcp</artifactId>
+			<groupId>com.alibaba</groupId>
+			<artifactId>druid</artifactId>
 		</dependency>
 		</dependency>
 		<!-- spring mobile -->
 		<!-- spring mobile -->
 		<dependency>
 		<dependency>

+ 3 - 4
src/main/java/com/uas/platform/b2b/data/support/DSUtils.java

@@ -6,12 +6,12 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
 
 
-import org.apache.commons.dbcp.BasicDataSource;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.JdbcTemplate;
 
 
+import com.alibaba.druid.pool.DruidDataSource;
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.ContextUtils;
 
 
 public class DSUtils {
 public class DSUtils {
@@ -41,16 +41,15 @@ public class DSUtils {
 	private static void createDataSource(DS ds) {
 	private static void createDataSource(DS ds) {
 		ConfigurableApplicationContext context = (ConfigurableApplicationContext) ContextUtils.getApplicationContext();
 		ConfigurableApplicationContext context = (ConfigurableApplicationContext) ContextUtils.getApplicationContext();
 		DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context.getBeanFactory();
 		DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context.getBeanFactory();
-		BeanDefinitionBuilder bdb = BeanDefinitionBuilder.rootBeanDefinition(BasicDataSource.class);
+		BeanDefinitionBuilder bdb = BeanDefinitionBuilder.rootBeanDefinition(DruidDataSource.class);
 		bdb.getBeanDefinition().setAttribute("id", ds.getId());
 		bdb.getBeanDefinition().setAttribute("id", ds.getId());
-		bdb.getBeanDefinition().setAttribute("destroy-method", "close");
+		// bdb.getBeanDefinition().setAttribute("destroy-method", "close");
 		bdb.addPropertyValue("driverClassName", ds.getDriverClassName());
 		bdb.addPropertyValue("driverClassName", ds.getDriverClassName());
 		bdb.addPropertyValue("url", ds.getUrl());
 		bdb.addPropertyValue("url", ds.getUrl());
 		bdb.addPropertyValue("username", ds.getUsername());
 		bdb.addPropertyValue("username", ds.getUsername());
 		bdb.addPropertyValue("password", ds.getPassword());
 		bdb.addPropertyValue("password", ds.getPassword());
 		bdb.addPropertyValue("initialSize", 1);
 		bdb.addPropertyValue("initialSize", 1);
 		bdb.addPropertyValue("maxActive", 20);
 		bdb.addPropertyValue("maxActive", 20);
-		bdb.addPropertyValue("maxIdle", 2);
 		bdb.addPropertyValue("maxWait", 5000);
 		bdb.addPropertyValue("maxWait", 5000);
 		bdb.addPropertyValue("poolPreparedStatements", true);
 		bdb.addPropertyValue("poolPreparedStatements", true);
 		bdb.addPropertyValue("defaultAutoCommit", true);
 		bdb.addPropertyValue("defaultAutoCommit", true);

+ 17 - 13
src/main/java/com/uas/platform/b2b/data/support/MultiDataSource.java

@@ -9,18 +9,22 @@ import java.util.logging.Logger;
 
 
 import javax.sql.DataSource;
 import javax.sql.DataSource;
 
 
-import org.apache.commons.dbcp.BasicDataSource;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.context.ApplicationContextAware;
 
 
-public class MultiDataSource extends BasicDataSource implements DataSource, ApplicationContextAware {
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.pool.DruidPooledConnection;
+
+public class MultiDataSource extends DruidDataSource implements DataSource, ApplicationContextAware {
+
+	private static final long serialVersionUID = 1L;
 
 
 	private ApplicationContext applicationContext = null;
 	private ApplicationContext applicationContext = null;
-	private DataSource dataSource = null;
+	private DruidDataSource dataSource = null;
 	private Properties connectionProperties = null;
 	private Properties connectionProperties = null;
 
 
-	public Connection getConnection() throws SQLException {
+	public DruidPooledConnection getConnection() throws SQLException {
 		return getDataSource().getConnection();
 		return getDataSource().getConnection();
 	}
 	}
 
 
@@ -28,7 +32,7 @@ public class MultiDataSource extends BasicDataSource implements DataSource, Appl
 		return getDataSource().getConnection(arg0, arg1);
 		return getDataSource().getConnection(arg0, arg1);
 	}
 	}
 
 
-	public PrintWriter getLogWriter() throws SQLException {
+	public PrintWriter getLogWriter() {
 		return getDataSource().getLogWriter();
 		return getDataSource().getLogWriter();
 	}
 	}
 
 
@@ -40,7 +44,7 @@ public class MultiDataSource extends BasicDataSource implements DataSource, Appl
 		this.connectionProperties = connectionProperties;
 		this.connectionProperties = connectionProperties;
 	}
 	}
 
 
-	public int getLoginTimeout() throws SQLException {
+	public int getLoginTimeout() {
 		return getDataSource().getLoginTimeout();
 		return getDataSource().getLoginTimeout();
 	}
 	}
 
 
@@ -48,7 +52,7 @@ public class MultiDataSource extends BasicDataSource implements DataSource, Appl
 		getDataSource().setLogWriter(arg0);
 		getDataSource().setLogWriter(arg0);
 	}
 	}
 
 
-	public void setLoginTimeout(int arg0) throws SQLException {
+	public void setLoginTimeout(int arg0) {
 		getDataSource().setLoginTimeout(arg0);
 		getDataSource().setLoginTimeout(arg0);
 	}
 	}
 
 
@@ -56,29 +60,29 @@ public class MultiDataSource extends BasicDataSource implements DataSource, Appl
 		this.applicationContext = applicationContext;
 		this.applicationContext = applicationContext;
 	}
 	}
 
 
-	public DataSource getDataSource(String dataSourceName) {
+	public DruidDataSource getDataSource(String dataSourceName) {
 		if (dataSourceName == null || dataSourceName.equals("")) {
 		if (dataSourceName == null || dataSourceName.equals("")) {
 			return this.dataSource;
 			return this.dataSource;
 		}
 		}
-		return (DataSource) this.applicationContext.getBean(dataSourceName);
+		return this.applicationContext.getBean(dataSourceName, DruidDataSource.class);
 	}
 	}
 
 
-	public void setDataSource(DataSource dataSource) {
+	public void setDataSource(DruidDataSource dataSource) {
 		this.dataSource = dataSource;
 		this.dataSource = dataSource;
 	}
 	}
 
 
-	public DataSource getDataSource() {
+	public DruidDataSource getDataSource() {
 		String sp = SpObserver.getSp();
 		String sp = SpObserver.getSp();
 		return getDataSource(sp);
 		return getDataSource(sp);
 	}
 	}
 
 
 	@Override
 	@Override
-	public <T> T unwrap(Class<T> iface) throws SQLException {
+	public <T> T unwrap(Class<T> iface) {
 		return null;
 		return null;
 	}
 	}
 
 
 	@Override
 	@Override
-	public boolean isWrapperFor(Class<?> iface) throws SQLException {
+	public boolean isWrapperFor(Class<?> iface) {
 		return false;
 		return false;
 	}
 	}
 
 

+ 0 - 1
src/main/resources/dev/jdbc.properties

@@ -4,7 +4,6 @@ jdbc.username=uuplatformdemo
 jdbc.password=selectuuplatform
 jdbc.password=selectuuplatform
 jdbc.initialSize=10
 jdbc.initialSize=10
 jdbc.maxActive=100
 jdbc.maxActive=100
-jdbc.maxIdle=50
 jdbc.minIdle=50
 jdbc.minIdle=50
 jdbc.suspectTimeout=60
 jdbc.suspectTimeout=60
 jdbc.timeBetweenEvictionRunsMillis=30000
 jdbc.timeBetweenEvictionRunsMillis=30000

+ 0 - 1
src/main/resources/prod/jdbc.properties

@@ -4,7 +4,6 @@ jdbc.username=platform$b2b
 jdbc.password=select*fromuu
 jdbc.password=select*fromuu
 jdbc.initialSize=10
 jdbc.initialSize=10
 jdbc.maxActive=100
 jdbc.maxActive=100
-jdbc.maxIdle=50
 jdbc.minIdle=50
 jdbc.minIdle=50
 jdbc.suspectTimeout=60
 jdbc.suspectTimeout=60
 jdbc.timeBetweenEvictionRunsMillis=30000
 jdbc.timeBetweenEvictionRunsMillis=30000

+ 6 - 9
src/main/resources/spring/context.xml

@@ -61,7 +61,7 @@
 		</property>
 		</property>
 	</bean>
 	</bean>
 
 
-	<bean id="defaultDataSource" class="org.apache.commons.dbcp.BasicDataSource"
+	<bean id="defaultDataSource" class="com.alibaba.druid.pool.DruidDataSource"
 		destroy-method="close">
 		destroy-method="close">
 		<property name="driverClassName" value="${jdbc.driverClassName}" />
 		<property name="driverClassName" value="${jdbc.driverClassName}" />
 		<property name="url" value="${jdbc.url}" />
 		<property name="url" value="${jdbc.url}" />
@@ -71,8 +71,6 @@
 		<property name="initialSize" value="${jdbc.initialSize}" />
 		<property name="initialSize" value="${jdbc.initialSize}" />
 		<!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制 -->
 		<!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制 -->
 		<property name="maxActive" value="${jdbc.maxActive}" />
 		<property name="maxActive" value="${jdbc.maxActive}" />
-		<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 ,0时无限制 -->
-		<property name="maxIdle" value="${jdbc.maxIdle}" />
 		<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
 		<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
 		<property name="minIdle" value="${jdbc.minIdle}" />
 		<property name="minIdle" value="${jdbc.minIdle}" />
 		<!-- 是否对已备语句进行池管理(布尔值),是否对PreparedStatement进行缓存 -->
 		<!-- 是否对已备语句进行池管理(布尔值),是否对PreparedStatement进行缓存 -->
@@ -89,7 +87,7 @@
 		<property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
 		<property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
 		<property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
 		<property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
 	</bean>
 	</bean>
-	<bean id="manageDataSource" class="org.apache.commons.dbcp.BasicDataSource"
+	<bean id="manageDataSource" class="com.alibaba.druid.pool.DruidDataSource"
 		destroy-method="close">
 		destroy-method="close">
 		<property name="driverClassName" value="${manage.jdbc.driverClassName}" />
 		<property name="driverClassName" value="${manage.jdbc.driverClassName}" />
 		<property name="url" value="${manage.jdbc.url}" />
 		<property name="url" value="${manage.jdbc.url}" />
@@ -99,8 +97,6 @@
 		<property name="initialSize" value="${jdbc.initialSize}" />
 		<property name="initialSize" value="${jdbc.initialSize}" />
 		<!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制 -->
 		<!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制 -->
 		<property name="maxActive" value="${jdbc.maxActive}" />
 		<property name="maxActive" value="${jdbc.maxActive}" />
-		<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 ,0时无限制 -->
-		<property name="maxIdle" value="${jdbc.maxIdle}" />
 		<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
 		<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
 		<property name="minIdle" value="${jdbc.minIdle}" />
 		<property name="minIdle" value="${jdbc.minIdle}" />
 		<!-- 是否对已备语句进行池管理(布尔值),是否对PreparedStatement进行缓存 -->
 		<!-- 是否对已备语句进行池管理(布尔值),是否对PreparedStatement进行缓存 -->
@@ -218,8 +214,9 @@
 		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 		<property name="defaultEncoding" value="utf-8"></property>
 		<property name="defaultEncoding" value="utf-8"></property>
 	</bean>
 	</bean>
-	<!-- 账户中心配置-->
-	<bean id="accountConfigurer" class="com.uas.account.web.AccountConfigurer" init-method="init">
-		<property name="configPath" value="classpath:${profile}/account.properties"/>
+	<!-- 账户中心配置 -->
+	<bean id="accountConfigurer" class="com.uas.account.web.AccountConfigurer"
+		init-method="init">
+		<property name="configPath" value="classpath:${profile}/account.properties" />
 	</bean>
 	</bean>
 </beans>
 </beans>

+ 0 - 1
src/main/resources/test/jdbc.properties

@@ -4,7 +4,6 @@ jdbc.username=uuplatformdemo
 jdbc.password=selectuuplatform
 jdbc.password=selectuuplatform
 jdbc.initialSize=10
 jdbc.initialSize=10
 jdbc.maxActive=100
 jdbc.maxActive=100
-jdbc.maxIdle=50
 jdbc.minIdle=50
 jdbc.minIdle=50
 jdbc.suspectTimeout=60
 jdbc.suspectTimeout=60
 jdbc.timeBetweenEvictionRunsMillis=30000
 jdbc.timeBetweenEvictionRunsMillis=30000