This commit is contained in:
Ramnivas Laddad
2013-10-16 14:43:44 -07:00
parent f7cecf1e77
commit 0ade97ee41
2 changed files with 13 additions and 6 deletions

View File

@@ -22,7 +22,7 @@
<properties>
<spring.framework.version>3.0.7.RELEASE</spring.framework.version>
<tomcat.version>6.0.29</tomcat.version>
<tomcat.version>7.0.42</tomcat.version>
<spring.amqp.version>1.0.0.RELEASE</spring.amqp.version>
<spring-data-redis.version>1.0.0.RELEASE</spring-data-redis.version>
@@ -80,7 +80,7 @@
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>dbcp</artifactId>
<artifactId>tomcat-jdbc</artifactId>
<version>${tomcat.version}</version>
<scope>provided</scope>
</dependency>

View File

@@ -1,19 +1,21 @@
package org.springframework.cloud.service.relational;
import static org.springframework.cloud.service.Util.hasClass;
import java.sql.DriverManager;
import java.util.logging.Logger;
import javax.sql.DataSource;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.cloud.Cloud;
import org.springframework.cloud.service.AbstractServiceConnectorCreator;
import org.springframework.cloud.service.ServiceConnectorConfig;
import org.springframework.cloud.service.ServiceConnectorCreationException;
import org.springframework.cloud.service.common.RelationalServiceInfo;
import org.springframework.jdbc.datasource.SimpleDriverDataSource;
import static org.springframework.cloud.service.Util.*;
/**
*
* @author Ramnivas Laddad
@@ -22,6 +24,8 @@ import static org.springframework.cloud.service.Util.*;
*/
public abstract class DataSourceCreator<SI extends RelationalServiceInfo> extends AbstractServiceConnectorCreator<DataSource, SI> {
private static Logger logger = Logger.getLogger(DataSourceCreator.class.getName());
private DataSourceConfigurer configurer = new DataSourceConfigurer();
public abstract String getDriverClassName();
@@ -34,16 +38,19 @@ public abstract class DataSourceCreator<SI extends RelationalServiceInfo> extend
Class.forName(getDriverClassName());
// Give first preference to user's DBCP datasource
if (hasClass("org.apache.commons.dbcp.BasicDataSource")) {
logger.info("Found DBCP on the classpath. Using it for DataSource connection pooling.");
org.apache.commons.dbcp.BasicDataSource ds = new org.apache.commons.dbcp.BasicDataSource();
setBasicDataSourceProperties(ds, serviceInfo, serviceConnectorConfig);
return ds;
// else, we have one from Tomcat
} else if (hasClass("org.apache.tomcat.dbcp.dbcp.BasicDataSource")) {
org.apache.tomcat.dbcp.dbcp.BasicDataSource ds = new org.apache.tomcat.dbcp.dbcp.BasicDataSource();
} else if (hasClass("org.apache.tomcat.jdbc.pool.DataSource")) {
logger.info("Found Tomcat connection pool on the classpath. Using it for DataSource connection pooling.");
org.apache.tomcat.jdbc.pool.DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource();
setBasicDataSourceProperties(ds, serviceInfo, serviceConnectorConfig);
return ds;
} else {
// Only for testing outside Tomcat/CloudFoundry
logger.warning("Found neither DBCP nor Tomcat connection pool on the classpath (no pooling in effect)");
return new SimpleDriverDataSource(DriverManager.getDriver(serviceInfo.getJdbcUrl()),
serviceInfo.getJdbcUrl());
}