java ConnectionPool 사용 web 아닌 일반 어플에서
조심해
jdbc를 이용하여 외부업체 db의 데이터를 저희측 db로 데이터를 전송해오는 프로그램입니다.
com.mysql.jdbc.exceptions.jdbc4.communicationsexception:
communications link failure the last packet successfully received from the server was 41,313 milliseconds ago.
the last packet sent successfully to the server was 41,313 milliseconds ago.
하루나 일정시간이 지나면 이런에러가 나와 프로그램이 동작하지않습니다.
위의 오류는 마지막 성공한 쿼리문으로부터 일정시간이상 아무 입력이 없어서 발생하는 에러인가요?
무슨 오류인지도알려주시면 감사하겠습니다.
connectionpool을 사용하고 싶은데 거의 검색해보아도 web에서 사용중인 커넥션풀에 대한것만 나와서
참조하기가 어렵습니다. 제가 아직 초보여서 일반 java app 환경에서 사용하시는 커넥션풀 참조할
자료나 개념적으로 알려주셨으면합니다.
-
행운아
잘 해결되시길 바래봅니다.. 화이팅!
-
으뜸
지금까지 계속 검색해서 찾아봤는데 가능성이 보이는것을 찾았습니다.
BasicDataSource를 사용해서 테스트중인데 설정중에 보니
dbcp 설정이 거의다 있네요 .
bds.setDriverClassName(db_driver);
bds.setUrl(db_url);
bds.setUsername(db_id);
bds.setPassword(db_pass);
bds.setValidationQuery(\SELECT 1\);
테스트 해서 문제있나 확인해봐야겠습니다 -
바나나맛사탕
천재님/일단 계속 서베이를 해보셔야할 것 같습니다.
또한 해결방법이 없다면 주기적으로 가비지 쿼리를 하던지 꼼수를 부려야겠지요 -
유미
autoReconnectForPool=true 찾아보니 오토리커넥트와 같이 8시간정도후면 같은현상이
발생 된다고하네요 connectionpool 같은 경우 datasource를 이용해서
아파치 dbcp 사용하여 설정하는것처럼 validationQuery 설정하는방법이 없을까요 -
가장
천재님께서는 웹하고 app가 다를 거라고 생각하시는데
jdbc는 웹에서 사용하는거나 app에서 사용하는 거나 같습니다.
수다님이 덧글하신 것처럼 jdbc 연결에 autoreconnectforpool=true 를 사용하면 될 것입니다. -
연다홍
답변감사합니다 ^^ 이문제 확인하고 나서 지금 커넥션풀을 써보려고 하는데
거의 웹에서 사용중인 connectionpool만 나와서 참조하기가 힘드네요