java - 如何使用 ActiveJDBC 处理重新连接到数据库
问题描述
我在生产中有一个 Spring Boot Java 应用程序,它使用 ActiveJDBC 访问 MariaDB 数据库。
如果在启动时应用程序在数据库服务器之前启动,或者如果数据库服务器崩溃并重新启动,则应用程序不会重新建立与数据库的连接。
ActiveJDBC 版本为 1.4.13,如果可能的话,我宁愿不升级它,以避免可能的损坏。db 参数是使用database.properties
文件配置的,通常使用模式是:
try {
Base.open();
...
} finally {
Base.close();
}
有没有办法绕过这个问题,而无需监视和重新启动应用程序?也许使用连接池?如果是这种情况,是否有任何文档或示例?
解决方案
如果您在database.properties
文件中使用直接 JDBC 连接,则每次执行时都会打开一个新连接Base.open()
。这意味着任何断开的旧连接都不再相关。如果您使用 JDNI 池,例如:
production.jndi=java:comp/env/jdbc/acme
那么您要配置容器的池,以确保池提供的每个连接在池提供与您的应用程序的连接之前都是有效的。如何做到这一点取决于您的容器/池的实现和文档。
无论如何,我认为你不会有问题。
推荐阅读
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?
- c - 我知道一个地址,但我应该如何判断在哪个部分?使用C的全局区域或堆区域或堆栈区域
- json - 如何解决“手势 RangeError(索引)捕获的异常:无效值:有效值范围为空:0”
- c++ - 什么会使多边形算法中的点仅在正向和反向运行时才能正常工作?
- php - PHP:如何使用键->值对每两个分隔符将一个字符串分解为一个数组
- kubernetes - 将 GKE 集群拆除为“全新”状态而不删除它?
- scala - Spark——自定义reduce函数保存到磁盘然后上传到s3
- javascript - XMLHttpRequest 返回事件对象而不是实际数据
- fortran - Fortran 将未知大小的文件读入数组