자주는 아니지만 DB Connection pool을 사용하다보면 가끔씩 연결이 끊어지는 경우가 있다. 아무래도 설정상의 문재인것 같았다. 그래서 알아 낸 정보가 다음과 같다.
일단 web.xml에 설정해 놓았다면 그쪽을 수정하고 아니면 context.xml을 사용하여 해당 app에만 설정해 놓았다면 그쪽을 수정하자.
- validationQuery 연결이 되어 있는지를 체크하는 쿼리로 의미없는 간단한 쿼리를 실행하도록 설정한다. Oracle일 경우 “select 1 from dual”이 좋을것 같고 MySQL이나 MS SQLServer일 경우에는 “select 1″로 설정해 두는 게 좋을 것 같다.
- timeBetweenEvictionRunsMillis 물리적인 연결이 어떠한 실행도 없이 휴면하는 도중에 validationQuery에 설정해 둔 Query를 실행하는 간격을 설정한다. 밀리세컨드단위로 설정하며 보통 1분(60000)으로 설정해 두자
- testWhileIdle 물리적연결에 아무런 작업이 없을 경우 validationQuery에 설정한 쿼리를 던져 테스트를 할지에 대한 여부를 설정하며 true,false를 설정할 수 있다. true로 설정해두자.
위와같은 3가지 설정을 하고서 가끔씩 끊어지는 연결로 발생하던 Exception은 없어졌다.