【发布时间】:2015-12-01 06:47:22
【问题描述】:
在我的 Spring Boot 应用程序中,我正在使用 org.apache.tomcat.jdbc.pool.DataSource 创建一个数据源。我正在使用嵌入式tomcat。以下是我设置的一些属性
myDS.setDriverClassName(driverClassName);
myDS.setUrl(databaseURL);
myDS.setUsername(databaseUserId);
myDS.setTestWhileIdle(false);
myDS.setTestOnBorrow(true);
myDS.setValidationQuery("SELECT 1");
myDS.setTestOnReturn(false);
myDS.setValidationInterval(30000);
myDS.setTimeBetweenEvictionRunsMillis(30000);
myDS.setMaxActive(100);
myDS.setInitialSize(10);
myDS.setMaxWait(10000);
myDS.setRemoveAbandonedTimeout(60);
myDS.setMinEvictableIdleTimeMillis(30000);
myDS.setMinIdle(10);
myDS.setLogAbandoned(true);
myDS.setRemoveAbandoned(true);
我在两个具有原型作用域的 spring bean 中使用了这个 ds 对象。当我使用第一个使用第一个 spring bean 应用程序的功能时,它工作正常。然后我点击使用相同 ds 对象的第二个功能然后我得到以下错误
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Failed to validate a newly established connection.
在我的代码内部,我使用 jdbcTemplate 进行数据库操作。我尝试使用destroy方法,但它不起作用
@Bean(destroyMethod="") 公共数据源 appDS(){
请推荐
【问题讨论】:
-
你用的是什么数据库?
-
你为什么不使用
spring.datasource命名空间。它会自动完成所有这些操作。 -
我更改了验证查询,它开始正常工作。我的问题是为什么我在嵌入式 tomcat 上会收到此错误,为什么在外部或独立 tomcat 上却没有
-
我正在使用 DB2 数据库,将验证查询更改为 SELECT current date FROM sysibm.sysdummy1
标签: spring jdbc spring-boot jdbctemplate