Domanda

Sto incorporando un JRE in un'applicazione C esistente usando l'API di invocazione e Mi piacerebbe poter usare JDBC per lavorare con il database in quel codice. Questo applicazione è un'applicazione di elaborazione delle transazioni e il database la transazione è gestita dal codice nella parte C dell'applicazione e il il codice java deve essere eseguito all'interno di quella transazione. Ciò significa che non riesco ad aprire a nuova connessione, devo riutilizzare quella esistente.

Quindi, c'è un modo per fornire l'accesso JDBC a un handle di connessione ODBC esistente durante l'impostazione di JRE? Qualche ponte JDBC-ODBC, forse, ma a differenza del driver esistente con quel nome, uno che può essere impostato per usare un esistente connessione e transazione.

Le altre mie opzioni, come le vedo io, sono le seguenti:

  • Fornisce equivalenti Java per ogni operazione C possibile in applicazione (questo non è desiderabile per molte ragioni - abbiamo a molti metodi e duplicarli è un dolore nel culo.

  • Scrivi il mio driver JDBC che avvolge la connessione ODBC con JNI. Certo, lo farebbe essere un divertente progetto di fine settimana (mese), ma mi aspetto di aver bisogno di qualcosa fatto più velocemente di quello.

Aiutami, Stack-Overflow, sei la mia unica speranza!

È stato utile?

Soluzione

Non so se funzionerà, ma ... Ho dato una rapida occhiata al codice sorgente decompilato del bridge JDBC-ODBC di Sun. Sembra che potresti sottoclassare JdbcOdbcConnection in modo che si inizializzi con un handle di connessione noto e uno stato già aperto. Ciò presuppone che gli handle di connessione sul lato Java siano effettivi handle di connessione ODBC o puntatori agli oggetti di connessione e che le librerie ODBC utilizzate dal bridge JDBC-ODBC e il codice siano compatibili nel senso che possono condividere handle di connessione.

È necessario verificare se la licenza di Sun consente agli sviluppatori di eseguire tali trucchi.

Altri suggerimenti

Sun fornisce un JDBC-ODBC bridge nel JDK.

EDIT: rileggere suoni come se lo sapessi già e non vuoi usarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top