2012-04-20 2 views
3

최대 절전 모드로 봄을 사용하고 있습니다. & 내 응용 프로그램에는 3 개의 모듈이 있습니다. 각 모듈에는 특정 데이터베이스가 있습니다. 따라서 응용 프로그램은 3 개의 데이터베이스를 처리합니다. 서버가 시작될 때 데이터베이스 중 하나가 작동 중지되면 서버가 시작되지 않습니다. 내 요구 사항은 데이터베이스가 다운 된 경우에도 서버가 다른 모듈의 데이터베이스가 최대으로 시작해야하므로 사용자는 다른 두 모듈에서 작업 할 수 있습니다. 제발 이걸 어떻게 얻을 수 있을지 제안 해주세요. 스프링 3.x 및 최대 절전 모드 3.x를 사용 중입니다. 또한 c3p0 연결 풀링을 사용하고 있습니다. 응용 프로그램 서버는 입니다. Tomcat입니다.데이터베이스가 다운 된 경우에도 App Server를 시작하는 방법은 무엇입니까?

감사합니다.

+0

굵게 표시된 텍스트는 무엇입니까? – adarshr

+0

시도해 보셨습니까? c3p0이 모든 연결을 사전 검사하지 않으면 사용하려고 시도 할 때까지 특정 데이터베이스가 다운되었음을 알지 못할 것입니다. 그때까지 귀하의 신청서는 이미 시작되었습니다. – beny23

+0

안녕하세요, Beny, 답장을 보내 주셔서 감사합니다. c3p0의 유효성 검사가 실패하면 데이터베이스가 다운 된 경우 서버가 올바르게 시작되지 않습니다. 내가 틀렸다면 나를 바로 잡아주세요. 감사! – user1016403

답변

3

저는 @Configuration 어노테이션을 사용하여 콩을 만들고 DB 다운 시나리오를 다루는 일을하는 객체를 만듭니다. 빈을 구성 할 때 DB 연결이 작동하는지 테스트하고, 그렇지 않으면 빈의 더미 버전을 리턴하십시오. 이것은 관련 객체에 주입됩니다. 이 더미 빈의 역할은 호출 될 때 사용할 수없는 예외를 던지기위한 것입니다. 앱이 특정 기능에 대해 사용할 수없는 예외를 처리 할 수 ​​있고 다른 데이터 소스가 사용될 때 계속 작동하면서 사용자에게 보여 주면 괜찮을 것입니다.

당신이 그것을 시도 해 봤나 :

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

안녕하세요 BruceLowe, 답장을 보내 주셔서 감사합니다. 어떤 방법으로 데이터베이스 중 하나가 작동하더라도 앱 서버를 만들 수 있습니다. 하지만 일단 사용자가 다른 모듈을 사용하여 시작하면 데이터베이스가 중간에 있고 사용자가 데이터베이스에 액세스하려고하면 해당 데이터베이스에 대해서만 풀링을 구성 할 수 있습니까? 감사 – user1016403

1

이 원래 코멘트했다? c3p0이 모든 연결을 사전 검사하지 않으면 사용하려고 시도 할 때까지 특정 데이터베이스가 다운되었음을 알지 못할 것입니다. 그때까지 귀하의 신청서는 이미 시작되었습니다.