티스토리 뷰
톰캣을 shutdown하면 아래와 같은 오류메세지를 확인할 수 있다.
내용인즉슨
.톰캣을 종료할때 jdbcDriver를 미등록상태로 변경할때 오류가 나고 메모리 누수를 막기 위해 강제로 jdbcDriver를 미등록 상태로 만들겠다라는 내용.
해결방법은
- common-dbcp webapps/WEB-INF/lib 경로에서 tomcat/lib 경로로 이동하여 등록된 driver로 인식하게끔
- 톰캣입장에서는 메모리누수방지를 위해 드라이버를 강제로 해제하는것이므로 옳은일을 하고 있는것이므로 해당 오류는 무시해도 무방함.
- common-dbcp.1.4버전에서 메모리 누수 버그로 인하여 library 업데이트가 있음. (https://issues.apache.org/jira/browse/DBCP-330)
jdk버전에 맞게 lib버전도 업데이트 고려
common-dbcp??
아파치에서 was에서 필요한 데이터베이스의 커넥션 및 트랜잭션관리를 좀더 유기적이고 효율적이게 하도록 디비커넥션을 풀링(?)하는 공통라이브러리
DBCP 호환성?
DBCP now comes in three different versions to support different versions of JDBC. Here is how it works:
- DBCP 2 compiles and runs under Java 7 only (JDBC 4.1)
- DBCP 1.4 compiles and runs under Java 6 only (JDBC 4)
- DBCP 1.3 compiles and runs under Java 1.4-5 only (JDBC 3)
DBCP 2 binaries should be used by applications running under Java 7.
DBCP 1.4 binaries should be used by applications running under Java 6.
DBCP 1.3 should be used when running under Java 1.4 5.
출처 : https://commons.apache.org/proper/commons-dbcp/
joyple server common-dbcp의 버전은?(2016-09-09기준)
commons-dbcp-1.4
spring-jdbc-4.1.1
java8
최종 common-dbcp 버전업이 필요한 이유
Tomcat shutdown시 jdbcDriver전환 오류 => 버전업 후 tomcat shutdown 테스트하였으나 동일한 메세지 나타남
Connection.getMetadata() 호출시 메모리 누수 버그
라이브러리 버전 호환성
버전업 할때 체크할 사항
- org.apache.commons.dbcp2.BasicDataSource 변경
Parameter | Default | Description |
---|---|---|
initialSize | 0 | The initial number of connections that are created when the pool is started. Since: 1.2 |
maxTotal | 8 | The maximum number of active connections that can be allocated from this pool at the same time, or negative for no limit. |
maxIdle | 8 | The maximum number of connections that can remain idle in the pool, without extra ones being released, or negative for no limit. |
minIdle | 0 | The minimum number of connections that can remain idle in the pool, without extra ones being created, or zero to create none. |
maxWaitMillis | indefinitely | The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely. |
- common-pool 호환성(commons-pool2-2.4.2.jar)
- 성능테스트 -> 메모리누수 문제가 되었던 Connection.getMetadata()는 테스트결과 확실히 성능향상이 된것을 확인하였음
* 라이브러리 업데이트시 모든 프로젝트의 jdbc설정 및 mvc>common>handler class 변경이 필요하므로 당장 중요한 이슈가 아니라 판단되어 추후 jndi 설정이나 dataSourceName에 대한 정리가 있을때 라이브러리 업데이트를 같이 진행하도록.
'프로그램 > JAVA' 카테고리의 다른 글
스프링프레임웍 호스트설정시 주의사항 (0) | 2017.01.11 |
---|---|
Aspectj로 공통로깅 만들기 (0) | 2016.12.27 |
Troubleshooting 스레드사용법 (0) | 2016.10.12 |
자바 메모리 튜닝 (0) | 2016.10.12 |
자바 메모리 분석방법 및 분석도구 (0) | 2016.10.12 |
- Total
- Today
- Yesterday
- 원격접속툴
- oauth sso 차이
- 원격접속 무료툴
- mybatis overloading
- java.lang.UnsatisfiedLinkError
- 객체지향언어 자바
- jenkins asyncpeople
- no net in java.library.path
- 스프링 마이바티즈 연동오류
- 인덱스 자료구조
- 작은거에소스라치게놀라는나
- jenkins user list
- select count(*) performence
- jenkins remote api
- mysql 인덱스
- a태그 onclick이벤트
- 스프링 크로스도메인
- google vm ssh
- Google ssh console
- 젠킨스 api
- nested exception is org.apache.ibatis.binding.BindingException\
- response server header
- mybatis overload
- 젠킨스 윈도우 설치
- springboot server header
- common-dbcp
- mysql count
- mysql count 성능
- BeanCreationException
- spring mybatis
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |