JNI를 사용하여 JVM에 C ODBC 연결을 노출하려면 어떻게해야합니까?
-
05-07-2019 - |
문제
호출 API를 사용하여 기존 C 응용 프로그램에 JRE를 포함하고 있으며 JDBC를 사용하여 해당 코드의 데이터베이스와 함께 작동 할 수 있습니다. 이 응용 프로그램은 트랜잭션 처리 응용 프로그램이며 데이터베이스 트랜잭션은 응용 프로그램의 C 부분의 코드별로 관리되며 Java 코드는 해당 트랜잭션 내에서 실행해야합니다. 이것은 내가 열 수 없다는 것을 의미합니다새로운 연결, 기존의 것을 재사용해야합니다.
그렇다면 JRE를 설정할 때 기존 ODBC 연결 핸들에 대한 JDBC 액세스를 제공하는 방법이 있습니까? 일부 JDBC-ODBC 브리지는 아마도 그 이름의 기존 드라이버와 달리 기존 연결 및 트랜잭션을 사용하도록 설정할 수 있습니다.
내가 볼 수 있듯이 다른 옵션은 다음과 같습니다.
응용 프로그램에서 가능한 모든 C 작동에 대해 Java 동등한 제품을 제공합니다 (이것은 많은 이유로 바람직하지 않습니다. 우리는 많은 방법을 가지고 있으며 그것들을 복제하는 것은 엉덩이의 고통입니다.
JNI와 ODBC 연결을 감싸는 나만의 JDBC 드라이버를 작성하십시오. 물론, 그것은 재미있는 주말 (월) 프로젝트 일 것이지만, 나는 그보다 더 빨리 일을해야 할 것으로 기대합니다.
도와주세요, 스택 오버 플로우, 당신은 나의 유일한 희망!
해결책
이것이 작동하는지 모르겠지만 ... Sun의 JDBC-ODBC 브리지의 소스 소스 코드를 간단히 살펴 보았습니다. JDBCODBCConnection을 서브 클래스하여 알려진 연결 핸들 및 이미 열린 상태로 초기화 할 수있는 것 같습니다. 이는 Java 측의 연결 핸들이 연결 객체에 대한 실제 ODBC 연결 핸들 또는 포인터이며 JDBC-ODBC 브리지가 사용하는 ODBC 라이브러리와 코드가 연결 핸들을 공유 할 수 있다는 점에서 호환된다고 가정합니다.
Sun의 라이센스를 통해 개발자가 그러한 속임수를 수행 할 수 있는지 확인해야합니다.
다른 팁
태양은 a JDBC-ODBC 브리지 JDK에서.
편집 : 이미 알고있는 것처럼 소리를 내고 사용하고 싶지 않습니다.