Spring Boot 1.5.x 기반으로 만들어진 프로젝트를 인수인계 받게 되었습니다. 일단 인수인계 받은 프로젝트를 실행해보니 아래와 같은 에러 메세지가 출력됩니다.
INFO PoolBase[localhost-startStop-1] — HikariPool-1 — Driver does not support get/set network timeout for connections. (oracle.jdbc.driver.T4CConnection.getNetworkTimeout(I))
로그 레벨은 INFO 라면 문제는 없지만 에러 문제를 찾아봤습니다.
Dev Environment
개발환경은 DB, ojdbc 동일한 Patch 버전을 사용하고 있습니다.
- Spring Boot 1.5
- Oracle 11g 11.2.04
- ojdbc6 11.2.0.4
Debug + Break Point
에러 문구를 출력하고 있는 HikariPool 해당 부분에 Break Point를 걸고 Debugging을 시도합니다. Exception이 발생합니다. 그렇다면 oracle.jdbc.driver.T4CConnection.getNetworkTimeout가 어떤 조건에서 Exception을 발생하는지 reference를 찾아보도록 합니다. 하지만 11.2.0.3 reference에는 getNetworkTimeout 없습니다. deprecated 되거나 상위 버전에서 추가된 API 같습니다. 다음 버전 12.1.0.2 reference를 찾아보면 검색이 됩니다.
Conclusion
Oracle Maven에서 ojdbc7 12.1.0.2를 다운받은 후에 재구동하면 아래와 같이 에러문구가 사라진 것을 확인할 수 있습니다. GAV(oracle.jdbc. / ojdbc7 / 12.1.0.2) 이상을 설치하면 해결할 수 있습니다.
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>