현상
Azure 환경에서 HikariCP를 사용하여 Tibero JDBC 드라이버를 통해 DB에 연결 시, Driver does not support get/set network timeout for connections. 오류가 발생합니다.
원인
Tibero JDBC 드라이버 버전에 따라 setNetworkTimeout() / getNetworkTimeout() 메서드의 지원 여부가 다르며, 이로 인해 네트워크 타임아웃 설정 시 오류가 발생할 수 있습니다. 각 드라이버별 동작 여부는 다음과 같습니다.
드라이버 | 결과 |
tibero6-jdbc.jar | get/setNetworkTimeout() 메서드가 구현되어 있지 않아 해당 기능을 사용할 수 없습니다. |
tibero7-jdbc.jar | setNetworkTimeout() 메서드가 인터페이스에는 존재하지만, 실제 구현이 없어 실행 시 오류가 발생합니다.
Exception in thread "main" java.lang.AbstractMethodError: com.tmax.tibero.jdbc.driver.TbConnection.setNetworkTimeout(Ljava/util/concurrent/Executor;I)V
at TiberoNetworkTimeoutTest.main(TiberoNetworkTimeoutTest.java:16) |
tibero7-jdbc-18.jar | setNetworkTimeout() 및 getNetworkTimeout() 메서드 모두 정상적으로 동작합니다.
※ 사용 시 JDK 1.8 이상 필요 |
해결
tibero7-jdbc-18.jar (JDK 1.8 이상) 사용 시 setNetworkTimeout(), getNetworkTimeout() 모두 정상 동작하므로 해당 버전을 사용합니다.
참고
테스트 방법은 아래와 같습니다.
1. java 파일 생성
vi /home/tibero/tibero7/client/lib/jar/TiberoNetworkTimeoutTest.java
import java.sql.*;
import java.util.concurrent.*;
public class TiberoNetworkTimeoutTest {
public static void main(String[] args) {
String url = "jdbc:tibero:thin:@192.168.29.209:8629:tibero";
String user = "sys";
String password = "tibero";
System.out.println("Step 1: DB 연결 시도 중...");
try (Connection conn = DriverManager.getConnection(url, user, password)) {
System.out.println("Step 2: DB 연결 성공!");
Executor executor = Executors.newSingleThreadExecutor();
conn.setNetworkTimeout(executor, 5000);
System.out.println("Step 3: setNetworkTimeout 설정 완료!");
int timeout = conn.getNetworkTimeout();
System.out.println("현재 Network Timeout 값: " + timeout);
} catch (SQLFeatureNotSupportedException e) {
System.out.println("getNetworkTimeout()은 지원되지 않습니다.");
} catch (Exception e) {
System.out.println("예외 발생:");
e.printStackTrace();
}
}
}
SQL
복사
2. 컴파일
$ javac TiberoNetworkTimeoutTest.java
3. 실행
$ java -cp .:tibero7-jdbc-18.jar TiberoNetworkTimeoutTest
Step 1: DB 연결 시도 중…
Step 2: DB 연결 성공!
Step 3: setNetworkTimeout 설정 완료!
현재 Network Timeout 값: 5000
SQL
복사
tibero7-jdbc-14.jar / tibero7-jdbc.jar 파일에서는 실행이 되지 않습니다.
Step 1: DB 연결 시도 중…
Step 2: DB 연결 성공!
Exception in thread "main" java.lang.AbstractMethodError: com.tmax.tibero.jdbc.driver.TbConnection.setNetworkTimeout(Ljava/util/concurrent/Executor;I)V
at TiberoNetworkTimeoutTest.main(TiberoNetworkTimeoutTest.java:16)
SQL
복사