2013-08-24 7 views
1

나는 잊어 버린 연결을 해제하기 위해 unreturnedConnectionTimeout="1800"debugUnreturnedConnectionStackTraces="true"을 사용하고 있습니다. 하지만 때로는 응용 프로그램이 아직 살아 있지만 데이터베이스에 대한 활동이 없습니다. c3p0 연결 풀은 1800 초 후에 연결을 닫습니다. 이전 entityManager를 다시 사용하자 마자 연결이 닫혔다 고 불평합니다. 엔티티 관리자에게 네이티브 쿼리 (SELECT NOW())를 보내려고했으나 c3p0 연결을 유지하지 못했습니다. 어쩌면 기본 쿼리는 c3p0을 우회합니까 ???c3p0 연결을 활성 상태로 유지

나는 'unreturnedConnectionTimeout'을 실패 저장으로 유지하고 싶지만 유효한 연결을 유지할 수 있기를 원합니다.

어떻게 해결할 수 있습니까?

감사합니다, 마일로

편집 : 은 C3P0 연결이 unreturnedConnectionTimeout 후 존속 할 수없는 것 같다. 그것은 활동으로 보일뿐만 아니라 창조 시간으로 보입니다. 이제는 c3p0에 대한 api 액세스를 통해 생성 시간을 업데이트하려고합니다 ... 바, 더러운 ...

답변

0

매우 오랫동안 연결을 체크 아웃하는 것처럼 들립니다. 그게 커넥션 풀에 좋은 생각이 아니에요. 연결 (또는 최대 절전 모드 세션)은 필요할 때마다 획득하여 사용하고, 살아 있고 열지 말고 즉시 닫아야합니다.

이것은 구성상의 문제 이상의 것입니다.

행운을 빈다!

+0

감사합니다. 전적으로 동의합니다. 그러나 응용 프로그램이 잘못 된 방법으로 설계된 및 변경 순간에 많은 일할 것입니다. –

+0

인생은 그런 것입니다 ...하지만 연결이 정상적인 작동 과정에서 오랜 시간 동안 체크 아웃 된 상태로 유지되면 unreturnedConnectionTimeout을 failsafe로 사용할 수 없습니다. unreturnedConnectionTimout을 설정함으로써 합법적이고 비병 이적 인 유스 케이스에서 Connection이 체크 아웃 될 수있는 최대 기간을 c3p0에 알려줍니다. 연결이 응용 프로그램에서 무기한 열어두면 합법적이지 않을 시간이 없습니다. –

+0

나를 위해 다행히도 사용자가 무언가를 저장하거나 애플리케이션의 다른 페이지로 전환하는 즉시 연결이 닫힙니다. 나는 충분히 잘 작동하는 것으로 보이는 시간 제한을 4 시간으로 설정했다. 내가 이상한 것을 발견 한 것은 c3p0이 그것을 버리기 전에 활동을 확인하지 않는다는 것입니다. 나는 그것에 대한 질문을 만들 예정이다. –

관련 문제