当前位置: 首页 > 知识库问答 >
问题:

Spring Boot微服务中jdbcTemplate数据库连接关闭

陆甫
2023-03-14

我有一个微服务,在几个小时的工作时间后,无法连接到数据库,出现以下错误

@Getter
@Configuration
public class ApiConfiguration {

    @Autowired
    private Environment env;

    @Value("${spring.datasource.url}")
    private String legacyURL;

    @Value("${spring.datasource.username}")
    private String legacyUsername;

    @Value("${spring.datasource.password}")
    private String legacyPassword;

    @Value("${spring.datasource.driverClassName}")
    private String legacyDriverClassName;

    @Bean(name = "legacyDataSource")
    @Primary
    public JdbcTemplate getLegacyJdbcTemplate() {
        DataSource ds = DataSourceBuilder.create()
                .url(legacyURL)
                .username(legacyUsername)
                .password(legacyPassword)
                .driverClassName(legacyDriverClassName)
                .build();
        return new JdbcTemplate(ds);
    }
}
# Legacy spring.datasource.url=jdbc:sqlserver://${DB_SERVER};PortNumber=${DB_PORT};failoverPartner=${DB_FAILOVER_SERVER};databaseName=${DB_NAME};applicationName=questions-and-answers-api;
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

共有1个答案

司毅庵
2023-03-14

我想可能是因为网络问题,你的数据库连接变得陈旧了。尝试将以下条目添加到application.properties:

spring.datasource.testWhileIdle = true
spring.datasource.timeBetweenEvictionRunsMillis = 3600000
spring.datasource.validationQuery = SELECT 1

这将在给定的时间间隔内运行一个后台线程,并使用验证查询检查db连接。如果查询没有成功运行,它将从池中驱逐该连接。

 类似资料:
  • 我读过萨姆·纽曼的《微服务》一书,在关于分裂整体的一章中,他举了一个“打破外键关系”的例子,他承认跨API进行连接会更慢--但他接着说,如果你的应用程序足够快,它比以前慢有关系吗? 这似乎有点油嘴滑舌?人的经历是什么?您使用了哪些技术来使API联接执行得令人满意?

  • 问题内容: 我在hibernate状态下使用jpa。我有以下方法: 可以,但是它关闭了与数据库的连接。当秒被执行时 引发什么原因 我的配置: 编辑 我不知道为什么“ firstJDBCTemplateQuery”关闭数据库连接。如何解决这个问题? 堆栈跟踪: 编辑 我检查了堆栈跟踪。 编辑 我用 是 是 编辑调试结果 : 启动Beginin交易: /////////////////////////

  • 我们正在尝试将我们的单片应用程序转换为基于微服务的体系结构。我们使用Postgresql作为单一应用程序中的数据库之一,并使用BoneCP进行连接池。 当这个整体被拆分为多个独立的微服务,每个服务都运行在不同的JVM中时,我可以考虑两种连接池选项 BoneCP或任何适合每个微服务的连接池-我的初步研究表明,这是主要选择。可以对每个服务的连接需求进行细粒度控制。但是,不利的一面是,随着服务数量的增加

  • 我正在使用spring boot spring cloud spring JDBC为单片应用程序开发微服务。目前,应用程序正在通过tomcat JNDI连接池连接到单个数据库。 我们在这里遇到了一个瓶颈,由于各种原因,比如大量的数据库对象、与其他系统的紧密依赖性等,目前无法更改数据库体系结构。 因此,我们基于应用程序特性隔离了微服务。我担心的是,如果我们开发的微服务每个都有自己的连接池,那么到数据

  • 如果一个微服务只知道它自己的领域,但是有一个数据流需要多个服务以某种方式交互,那该怎么做呢? 假设我们有这样的东西: 为论证起见,假设一个订单发货后,就应该创建发票。 我确实知道这可以被认为是高度基于意见的。但它也有具体的一面,因为微服务不应该做上述的事情。因此,必须有一个“根据定义它应该做什么”,这不是基于意见的。 开枪啊。

  • 我计划将一个整体ASP. Net MVC应用程序迁移到微服务架构。 该应用程序位于教育领域,下面是当前拥有的子模块, 系统管理员 研究所管理员 候选人/学生门户 辅导员/教师门户 课程设置(可由辅导员或学院管理人员完成) 考试门户 报告门户[新] 视频会议门户[新] 为了实现微服务架构,我打破了当前的系统,如下图所示,并为每个模块创建DB。 在这里我面临一个问题,比如说考试 Db 目前与课程和科目