원인
세션이 close 되지 않고 프로그램이 종료되었을 때 발생합니다.
해결방안
방법 1. 프로그램이 종료되기 전 세션을 close 하는 함수를 작성합니다.
* JDBC 프로그램에서 close 메소드 없이 프로그램을 수행하는 경우 system.trc 조회
public static Connection createConnectionByDriverManager(String id, String password) throws Exception { Class.forName(GOLDILOCKS_DRIVER_CLASS); return DriverManager.getConnection(URL_BASIC, id, password); } public static void main(String[] args) throws Exception { Connection con = createConnectionByDriverManager("TEST", "test"); }
[2018-01-22 15:16:11.609454 INSTANCE(GOLDILOCKS) THREAD(4547,140261557147456)] [INFORMATION] [DEDICATE_SERVER] ERR-08S01(11141): Communication link failure: stnRecv() returned errno(11) [2018-01-22 15:16:11.693607 INSTANCE(GOLDILOCKS) THREAD(26967,139653224617728)] [WARNING] [CLEANUP] cleaning local session - env(17), session(18), local transaction(-1), program(JdbcSample), pid(4547), thread(140261557147456) [2018-01-22 15:16:11.693693 INSTANCE(GOLDILOCKS) THREAD(26967,139653224617728)] [WARNING] [CLEANUP] cleaning up 1 sessions
* close 메소드를 작성한 경우 system.trc 에 위의 에러메세지가 남지 않습니다.
public static Connection createConnectionByDriverManager(String id, String password) throws Exception { Class.forName(GOLDILOCKS_DRIVER_CLASS); return DriverManager.getConnection(URL_BASIC, id, password); } public static void main(String[] args) throws Exception { Connection con = createConnectionByDriverManager("TEST", "test"); con.close(); }