Pregunta

Estoy incrustando un JRE en una aplicación C existente usando la API de invocación, y Me gustaría poder usar JDBC para trabajar con la base de datos en ese código. Esta La aplicación es una aplicación de procesamiento de transacciones, y la base de datos la transacción se gestiona por código en la parte C de la aplicación, y la El código Java debe ejecutarse dentro de esa transacción. Esto significa que no puedo abrir un nueva conexión, debo reutilizar la existente.

Entonces, ¿hay alguna manera de proporcionar acceso JDBC a un manejador de conexión ODBC existente? al configurar el JRE? Algún puente JDBC-ODBC, tal vez, pero a diferencia del controlador existente con ese nombre, uno que se puede configurar para usar un existente conexión y transacción.

Mis otras opciones, tal como las veo, son las siguientes:

  • Proporcione equivalentes de Java para cada operación de C que sea posible en el aplicación (esto no es deseable por muchas razones, tenemos un muchos métodos y duplicarlos es una molestia.

  • Escribir mi propio controlador JDBC que envuelve la conexión ODBC con JNI. Claro será un proyecto divertido de fin de semana (mes), pero espero necesitar algo más rápido que eso.

¡Ayúdame, Stack-Overflow, eres mi única esperanza!

¿Fue útil?

Solución

No sé si esto funcionará, pero ... Eché un vistazo rápido al código fuente descompilado del puente JDBC-ODBC de Sun. Parece que podría subclasificar la JdbcOdbcConnection para que se inicialice con un identificador de conexión conocido y un estado ya abierto. Esto supone que los manejadores de conexión en el lado de Java son manejadores o punteros de conexión ODBC reales a objetos de conexión, y que las bibliotecas ODBC utilizadas por el puente JDBC-ODBC y su código son compatibles en el sentido de que pueden compartir manejadores de conexión.

Sin embargo, debe verificar si la licencia de Sun permite a los desarrolladores realizar tales trucos.

Otros consejos

Sun proporciona un puente JDBC-ODBC en el JDK.

EDITAR: volver a leer suena como si ya lo supieras y no quisieras usarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top