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

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

谢谢!

我会使用@Configuration注释来创建一个对象,它的工作就是构造bean并处理DB down场景。 构造bean时,测试数据库连接是否已启动,如果没有,则返回bean的虚拟版本。 这将被注入相关对象。 这个虚拟bean的工作就是在调用时真正抛出一个不可用的exception。 如果您的应用程序可以处理某些function的这些不可用的exception,并在使用其他数据源时继续运行时向用户显示,那么您应该没问题。

@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; } } } 

这最初是一个评论:

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