Как я могу предоставить соединение C ODBC с JVM, используя JNI? - PullRequest
1 голос
/ 08 октября 2008

Я встраиваю JRE в существующее приложение C, используя API вызова, и Я хотел бы иметь возможность использовать JDBC для работы с базой данных в этом коде. это приложение является приложением обработки транзакций, а база данных транзакция управляется кодом в C-части приложения, а Java-код должен выполняться внутри этой транзакции. Это означает, что я не могу открыть новое соединение, я должен повторно использовать существующее.

Итак, есть ли способ предоставить JDBC-доступ к существующему дескриптору соединения ODBC? при настройке JRE? Возможно, какой-то мост JDBC-ODBC, но в отличие от существующий драйвер с таким именем, который можно настроить на использование существующего соединение и транзакция.

Другие мои варианты, как я их вижу, следующие:

  • Предоставьте Java-эквиваленты для каждой операции C, которая возможна в приложение (это не желательно по очень многим причинам - у нас есть очень много методов, и дублирование их - боль в заднице.

  • Напишите мой собственный драйвер JDBC, который оборачивает соединение ODBC с JNI. Конечно, это было бы быть веселым проектом выходного дня (месяца), но я ожидаю, что нужно что-то сделать быстрее чем это.

Помоги мне, переполнение стека, ты моя единственная надежда!

Ответы [ 2 ]

1 голос
/ 08 октября 2008

Не знаю, сработает ли это, но ... Я быстро взглянул на декомпилированный исходный код моста Sun JDBC-ODBC. Похоже, вы могли бы создать подкласс JdbcOdbcConnection, чтобы он инициализировался с известным дескриптором соединения и уже открытым состоянием. Это предполагает, что дескрипторы соединения на стороне Java являются фактическими дескрипторами соединения ODBC или указателями на объекты соединения, а библиотеки ODBC, используемые мостом JDBC-ODBC и вашим кодом, совместимы в том смысле, что они могут совместно использовать дескрипторы соединения.

Вам необходимо проверить, позволяет ли лицензия Sun разработчикам выполнять такие хитрости.

0 голосов
/ 08 октября 2008

Sun обеспечивает мост JDBC-ODBC в JDK.

РЕДАКТИРОВАТЬ: перечитывание звучит так, как будто вы уже знаете об этом и не хотите его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...