3

Spring&Hibernateを使用しています。私のアプリケーションには3つのモジュールがあります。各モジュールには特定のデータベースがあります。したがって、アプリケーションは3つのデータベースを扱います。サーバーの起動時に、データベースのいずれかがダウンしている場合、サーバーは起動されません。私の要件は、データベースの1つがダウンしている場合でも、他のモジュールのデータベースがアップしているときにサーバーを起動する必要があり、ユーザーは他の2つのモジュールで作業できます。どうすればこれを達成できますか?私はspring3.xとhibernate3.xを使用しています。また、私はc3p0接続プールを使用しています。アプリサーバーはTomcatです。

ありがとう!

4

2 に答える 2

5

@Configurationアノテーションを使用して、Beanを構築し、DBダウンシナリオを処理することを目的としたオブジェクトを作成します。Beanを構築するときは、DB接続が確立されているかどうかをテストし、そうでない場合は、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;
   }
  }
}
于 2012-04-22T16:05:23.307 に答える
1

これはもともとコメントでした:

試しましたか?データベースに接続するまでデータベースがダウンしているかどうかはわかりません。したがって、c3p0がすべての接続を事前検証しない限り、特定のデータベースを使用しようとするまで、データベースがダウンしていることはわかりません。その時点で、アプリケーションはすでに開始されています。

于 2013-02-26T11:48:56.887 に答える