Oracle Zwei ojdbc Driver in einer Applikation?

ralfb1105

Bekanntes Mitglied
Hallo zusammen,

weiß jemand ob es möglich ist zwei ojdbc*jar in einer Applikation zu haben und dann vor/beim Aufbau einer Verbindung, sprich über den Code, zu entscheiden welcher genommen wird?
Hintergrund:
Ich schreibe eine Applikation die eine Datenbankverbindung (Oracle) testet. Hierbei wäre es hilfreich wenn ich das einmal mit JDBC Tracing und einmal ohne machen könnte - sprich ich benötige den ojdbc*_g für Tracing und ohne _g für Verbindungen ohne tracing.

Ich habe es mal mit dem System Property:
Java:
System.setProperty("oracle.jdbc.Trace", "true");
probiert, aber das zieht natürlich nur beim Start der Applikation und dann habe ich ja keine Möglichkeit über das GUI das zu steuern bevor ich eine Verbindung aufbaue.

Vielleicht habt Ihr ja eine Idee - im Netz habe ich dazu bis jetzt nichts für mich verständliches gefunden.

Gruß
Ralf
 

stg

Top Contributor
Vermutlich müsste man da mit einem eigenen ClassLoader herumtricksen.
Aber ist das denn überhaupt notwending? Kannst du nicht einfach zwei Instanzen deiner App starten und den jeweils passenden Treiber als Parameter mitgeben? Das kann ja meinetwegen auch eine kleine "Wrapper-App" übernehmen...
 

ralfb1105

Bekanntes Mitglied
Hallo stg,
vermutlich hast Du Recht, die Resonanz auf das Thema zeigt das es dan anscheinend keine häufig benutzte Lösung gibt. Das mit der Wrapper App die je nach Auswahl dann die Applikation mit oder ohne Debug startet ist eine interessante Idee - bin ich noch nicht drauf gekommen. Da ich FX Neuling bin, hättest Du ein Beispiel wie man so eine Wrapper App baut welche dann je nach Selektion eine andere App startet? Muss man da die JARs der beiden Applikationen im OS „lagern“ oder kann man die mit in das Projekt packen?

Gruß
Ralf
 

ralfb1105

Bekanntes Mitglied
Hallo mihe7,

Den Part hatte ich schon mal versucht zu implementieren, bin aber kläglich gescheitert, wenn ich mich richtig erinnere mit Fehlern in Eclipse die ich nicht auflösen konnte.
Ich werde es aber Morgen noch einmal testen und dann mal meinen Versuch hier detailliert Posten, vielleicht findest Du dann ja noch ein paar Minuten um ggf. Hilfe zu geben.

Gruß
Ralf
 

ralfb1105

Bekanntes Mitglied
Hallo mihe7,
ich habe es mal an Hand der aktuellen Doku (Oracle 18c - https://docs.oracle.com/en/database/oracle/oracle-database/18/jjdbc/jdbc-developers-guide.pdf) probiert, bekomme aber eine InstanceNotFoundException.

Folgendes habe ich in der initialize() Methode des Controllers codiert:
Java:
private javax.management.ObjectName name;
Code:
// JDBC Logging
        String loader = Thread.currentThread().getContextClassLoader().toString().replaceAll("[,=:\"]+", "");
        System.out.println("Loader: " + loader);
        try {
            name = new javax.management.ObjectName("com.oracle.jdbc:type=diagnosability,name=" + loader);
        } catch (MalformedObjectNameException e) {
            e.printStackTrace();
        }

        javax.management.MBeanServer mbs = java.lang.management.ManagementFactory.getPlatformMBeanServer();
        try {
            System.out.println("JDBC LoggingEnabled = " + mbs.getAttribute(name, "LoggingEnabled"));
        } catch (InstanceNotFoundException | AttributeNotFoundException | ReflectionException | MBeanException e) {
            e.printStackTrace();
        }
Ich habe mir mal loader und name ausgeben lassen:
Code:
Loader: sun.misc.Launcher$AppClassLoader@73d16e93
name: com.oracle.jdbc:type=diagnosability,name=sun.misc.Launcher$AppClassLoader@73d16e93

An der Stelle bin ich mit meinem Know-How am Ende, ich weiß ehrlich gesagt nicht wie ich das jetzt weiter debuggen könnte ...

Hat hier noch einer eine Idee?

Gruß
Ralf
 

ralfb1105

Bekanntes Mitglied
Hallo mihe7,
habe den Fehler für die Exception gefunden ;) ich Depp habe zu dem Zeitpunkt den JDBC Treiber nicht "geladen". Ich habe vorweg mal folgendes geschrieben:
Java:
try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }

und Dann kommt auch folgende Ausgabe ohne eine Exception:
Java:
Loader: sun.misc.Launcher$AppClassLoader@73d16e93
name: com.oracle.jdbc:type=diagnosability,name=sun.misc.Launcher$AppClassLoader@73d16e93
JDBC LoggingEnabled = false
ich schaue jetzt mal weiter ob denn auch etwas in das Log File geschrieben wird je nachdem wie ich das Logging setze. Ich melde mich dann gleich mit dem Ergebnis hier ..

Gruß
Ralf
 

ralfb1105

Bekanntes Mitglied
Hallo mihe7,

das Prpgramm läuft ohne Fehler aber egal of JDBC Loggin true oder false wird Debug Infos im Log File ausgegeben, je nachdem ob ich vorher die System Property "System.setProperty("oracle.jdbc.Trace", "true");" gesetzt habe und die entsprechenden Einträge im File "logging.properties". Leider funktioniert es nicht wenn ich "System.setProperty("oracle.jdbc.Trace", "true");" irgendwo später im Programm aufrufe, es funktioniert nur wenn ich es z.B. über
Java:
static {
        InputStream stream = Main.class.getClassLoader().getResourceAsStream("logging.properties");
        try {
            LogManager.getLogManager().readConfiguration(stream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        LOGGER = Logger.getLogger(Main.class.getName());
       
        System.setProperty("oracle.jdbc.Trace", "true");
    }
setze.
Das Ganze ist für mich mehr als unverstädnlich und ich stelle die Versuche jetzt ein.
Für mich wäre vermutlich ein gangbarer Weg über ein Wrapper, sprich ich starte eine kleine Applikation die dann je nach Auswahl meine Applikation mit oder ohne Debug enabled (Debug Treiber) startet.

Frage:
Gibt es eine Möglichkeit aus einem Java Programm ein anderes zu starten, wobei sich das "andere" als JAR im Package des "Wrapper" befindet. Ich finde immer wieder Hinweise zum "JarClassLoader" aber wenn ich das richtig verstehe muss ich den selbst implementieren?? eine fertige Klasse von Java habe ich nciht gefunden??

Hat jemand hier vielleicht ein Beispiel oder eine Idee?

Gruß

Ralf
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ataria SQLite Werte aus zwei Tabellen zusammenführen Datenbankprogrammierung 8
Z Aus zwei bestehenden Table eine zusätzliche Gemeinsame machen (JavaFX) Datenbankprogrammierung 21
C zwei Strings vergleichen Datenbankprogrammierung 13
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
M SQLite Zwei Datenbanken synchronisieren Datenbankprogrammierung 8
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
AssELAss Oracle Wildcard-Suche über zwei Felder Datenbankprogrammierung 5
M Oracle XA Connect auf zwei Datenbankinstanzen | fertiges Tool verfügbar? Datenbankprogrammierung 0
K Zwei Datenbanken miteinander auf Unterschiede vergleichen Datenbankprogrammierung 2
C Entities zwischen zwei PersistenceUnits tauschen Datenbankprogrammierung 5
M MySQL größere von zwei Zahlen in Update Statement Datenbankprogrammierung 2
Consuelo Verbinden von zwei Tabellen, foreign key Datenbankprogrammierung 4
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
D zwei gleichzeitige Connections Datenbankprogrammierung 2
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
N Zwei Spalten und Ihre Werte vergleichen Datenbankprogrammierung 3
P Insert into mit zwei Datenbanken Datenbankprogrammierung 3
G Inhalt eine Clob Feldes zw. zwei DB's kopieren Datenbankprogrammierung 2
W Zwei Fragen über JDBC und MySQL Datenbankprogrammierung 2
N Abfrage über zwei Datenbanken Datenbankprogrammierung 9
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
Maxim6394 EclipseLink + SQLite | Unable to acquire a connection from driver [null] Datenbankprogrammierung 6
thet1983 Derby/JavaDB Embedded Driver Datenbankprogrammierung 7
J RESTServie + JDBC + No suitable driver found for jdbc Datenbankprogrammierung 4
thet1983 MySQL ODBC Driver zuweisen unter Mac OX Mav Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
T JAR keine H2 driver? Datenbankprogrammierung 3
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
K JDBC Driver not found Datenbankprogrammierung 10
Y java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state Datenbankprogrammierung 2
AMStyles No suitable driver found for Datenbankprogrammierung 4
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
S Access 2007 zugreifen- ODBC Driver Manger Datenbankprogrammierung 3
A No suitable driver found for jdbc:microsoft:sqlserver... Datenbankprogrammierung 9
N Derby/JavaDB No suitable driver found Datenbankprogrammierung 14
StYxXx Microsoft-SQL: No suitable driver found Datenbankprogrammierung 11
K org.gjt.mm.mysql.driver wird nicht gefunden Datenbankprogrammierung 11
F MySQL - Connection JDBC-Driver Problem Datenbankprogrammierung 4
S java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 10
Y Java und MySql... "No suitable Driver..." Datenbankprogrammierung 16
F DBConnect schläg fehl: not suitble Driver ?!? Datenbankprogrammierung 4
N MS-acces JDBC driver Datenbankprogrammierung 3
D Jdbc: Unable to load Driver! Datenbankprogrammierung 11
S SQLException: No suitable driver bei DB2 Datenbankprogrammierung 4
H Fehler mit ". Microsoft Access Driver" Datenbankprogrammierung 12
G MySQL Driver Bug? Datenbankprogrammierung 6
H Konnte den Treiber com.mysql.jdbc.Driver nicht laden. Datenbankprogrammierung 19
G No suitable driver Datenbankprogrammierung 8
G No suitable driver Datenbankprogrammierung 16
L Wo bekomme ich: "org.gjt.mm.mysql.Driver"? Datenbankprogrammierung 1
G Das tolle "No suitable driver found" Datenbankprogrammierung 4
zilti java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 3
D java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Datenbankprogrammierung 5
B Oracle Driver Probleme Datenbankprogrammierung 2
E Problem beim laden des JDBC Driver bzw der Database Datenbankprogrammierung 8
S no suitable driver Datenbankprogrammierung 2
R NetBeans und com.mysql.jdbc.Driver Datenbankprogrammierung 2
N [Microsoft][ODBC Microsoft Access Driver]COUNT field incorre Datenbankprogrammierung 13
K Mysql Driver Datenbankprogrammierung 2
G MySQL: Login-Problem: No suitable Driver Datenbankprogrammierung 13

Ähnliche Java Themen

Neue Themen


Oben