본문 바로가기
Error Report/i-batis Exception

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException

by 알 수 없는 사용자 2012. 7. 22.
반응형

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

와 같은 문구의 에러가 발생한다면 mysql의 커넥션유지문제로 인해 생기는 예외처리 문구라고 합니다.


해결방법

dataSource.xml파일에 디비커넥션부분에 파라미터추가및 수정을 아래와같이 해줍니다.

p:url="jdbc:mysql://serverIP/DatabaseName"

=> p:url="jdbc:mysql://serverIP/DatabaseName?autoReconnect=true"


p:validationQuery="SELECT 1"    => MySql의 경우

p:validationQuery="select 1 from dual" => Oracle의 경우

p:testOnBorrow="true"


기타 DBCP옵션

maxActive : 커넥션 풀이 제공할 최대 커넥션 개수 

maxIdle : 사용되지 않고 풀에 저장될 수 있는 최대 커넥션 개수. 음수일 경우 제한이 없다. 

maxWait : whenExhaustedAction 속성의 값이 1일 때 사용되는 대기 시간. 단위는 1/1000초이며, 0 보다 작을 경우 무한히 대기한다. 

testOnBorrow : true일 경우 커넥션 풀에서 커넥션을 가져올 때 커넥션이 유효한지의 여부를 검사한다. 

testWhileIdle : true일 경우 비활성화 커넥션을 추출할 때 커넥션이 유효한지의 여부를 검사해서 유효하지 않은 커넥션은 풀에서 제거한다. 

timeBetweenEvctionRunsMillis : 사용되지 않은 커넥션을 추출하는 쓰레드의 실행 주기를 지정한다. 양수가 아닐 경우 실행되지 않는다. 단위는 1/1000 초이다. 

minEvictableIdleTimeMillis : 사용되지 않는 커넥션을 추출할 때 이 속성에서 지정한 시간 이상 비활성화 상태인 커넥션만 추출한다. 양수가 아닌 경우 비활성화된 시간으로는 풀에서 제거되지 않는다. 시간 단위는 1/1000초이다.