gpt4 book ai didi

java - 使用 Spring JDBC 模板执行查询时出现连接关闭错误

转载 作者:行者123 更新时间:2023-12-01 09:33:01 25 4
gpt4 key购买 nike

我正在使用 Spring JDBC 模板来查询 SQL Server 数据库。我有一个计划任务配置为每周执行一次,以下是实现:

@Autowired
private JdbcTemplate jdbcTemplate;

public void importData(){

try{
logger.debug("Importing Data");
jdbcTemplate.query(...) // Fails
catch(DataAccessException e){
//Log the error
}
}

执行任务时(即每周一次),我收到以下异常:

org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is java.sql.SQLException: Invalid state, the Connection object is closed.
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:305)
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:329)
at org.springframework.jdbc.support.SQLErrorCodesFactory.getErrorCodes(SQLErrorCodesFactory.java:214)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:134)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.<init>(SQLErrorCodeSQLExceptionTranslator.java:97)
at org.springframework.jdbc.support.JdbcAccessor.getExceptionTranslator(JdbcAccessor.java:99)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:660)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:695)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:727)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:737)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:787)

下面是驱动程序类:

spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver

我猜想 Spring(或 jdbc 驱动程序)如果在配置的时间内空闲,就会关闭连接。查看“查询”方法的实现,它似乎没有创建新连接。在这种情况下,我是否需要使用不同的方法(例如 execute)?

最佳答案

不是 Spring 关闭连接,而是数据库关闭连接(如果在一段时间内不活动)。或者可能是由于网络故障。

任何连接池都能够在将连接提供给请求它的数据源之前测试该连接。通常它是通过测试查询来完成的。

因此检查连接池是否配置正确。

关于java - 使用 Spring JDBC 模板执行查询时出现连接关闭错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39243932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com