即使数据库已关闭,如何使App服务器启动?

时间:2012-04-20 10:37:48

标签: java spring hibernate tomcat appserver

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

谢谢!

2 个答案:

答案 0 :(得分:4)

我会使用@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;
   }
  }
}

答案 1 :(得分:1)

这最初是评论:

你试过吗?在连接到数据库之前,您不知道数据库是否已关闭,因此除非c3p0预先验证其所有连接,否则在尝试使用它之前,您不会知道特定数据库已关闭。到那时你的申请已经开始了。