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