一尘不染

即使数据库关闭,如何使App Server启动?

tomcat

我正在使用spring和hibernate。我的应用程序有3个模块。每个模块都有一个特定的数据库。因此,Application处理3个数据库。在服务器启动时,如果任何一个数据库关闭,则服务器不会启动。
我的要求是即使数据库之一关闭,服务器也应在其他模块的数据库启动时启动 ,用户可以在其他两个模块上工作。请建议我该如何实现?我正在使用spring
3.x和hibernate3.x。我也正在使用 c3p0连接池 。应用服务器是 Tomcat

谢谢!


阅读 241

收藏
2020-06-16

共1个答案

一尘不染

我将使用@Configuration批注使一个对象的工作是构造bean和处理DB
down场景。构造bean时,请测试数据库连接是否已建立,如果不是,则返回bean的虚拟版本。这将注入到相关对象中。这个虚拟bean的工作实际上是在调用时抛出一个不可用的异常。如果您的应用程序可以处理某些功能无法使用的异常,并在使用其他数据源时继续向用户显示该功能,那么您应该可以。

@Configuration
public class DataAccessConfiguration {

  @Bean
  public DataSource dataSource() {
   try {
     //create data source to your database 
     ....
     return realDataSource;
   } catch (Exception) {
     //create dummy data source
     ....
     return dummyDataSource;
   }
  }
}
2020-06-16