2013-10-08 2 views
2

친구를 알고 싶습니다. jdbc 연결이 무효화 될 때 의도적으로 닫혔거나 일부 트랜잭션이 유효하지 않게 만들어 닫을 수 있습니다. 정확히 어떤 연결이 무효가되었는지, 연결에 남아있는 흔적이 있는지 확인할 수 있습니다.jdbc 연결이 유효하지 않은 이유를 알아내는 방법

내가 오프라인 상태 인 서버를 검색해야하는 상황에 직면하고 있습니다. 어떻게해야합니까? 연결 풀에서 연결을 빌리려는 모든 조작, 해당 연결이 유효한지 확인하십시오. 그렇지 않고 유효하지 않은 이유가 데이터베이스에 연결하지 못한 경우 propertychange를 실행하고 모든 구독자에게 변경 사항을 알리면 구독자는 모든 작업을 차단하고 쿼리를 시작하는 대화 상자를 팝업합니다 데이터베이스가 5 초마다 그것이 다시 있는지 확인하십시오. 희망 상황을 명확하게 만들었습니다.

+1

'SELECT 1 = 1'을 시도해 볼 수 있습니다. –

+0

해당 API를 확인해야합니다. –

+0

베드로가 제안한 것을 시도해 볼 수 있지만 DB 문제가 네트워크 문제 일 수 있거나 데이터베이스의 잘못이라고 말할 수없는 이유는 무엇입니까? –

답변

2

당신을 대신하여 연결을 확인하는 연결 풀링 라이브러리를 사용할 수 있습니다. 데이터베이스 작동 중에는 자동으로 연결 상태를 테스트하고 기존 연결이 유효하지 않은 경우 새 연결을 설정합니다. 간단한 SQL 문을 발행하여 예를 들어, 오래된 연결을 사용하려고 할 때 @PeterLawrey에 의해 제안, 전형적를

http://www.mchange.com/projects/c3p0/#configuring_connection_testing

0

: C3P0 연결 풀링 라이브러리의

다음 문서를 확인하세요 SQLException가 발생 해, 무엇이 잘못 되었는가의 상세한 것을 포함 해, 드라이버가 모두 사용할 수있는 경우에 슬로우됩니다. 예외를 잡아서 getErrorCode()getSQLState() 메서드로 반환되는 내용을 분석합니다. SQLSTATE 값은 표준화되어 있지만 매우 세밀하지는 않지만 공급 업체 오류 코드는 더 많은 정보를 제공 할 수 있지만 다른 데이터베이스 플랫폼에 연결될 때 달라질 수 있습니다.

관련 문제