Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verwenden Sie mehrere Oracle JDBC-Treiber in einer Java-Anwendung?

Wenn Sie die Treiber nicht registrieren, vermeiden Sie, dass sie vom selben Classloader geladen werden.

Dann können Sie Verbindungen mit den beiden verschiedenen Treibern erstellen, indem Sie sie über separate Classloader laden:

// Oracle 8 connection
File jar = new File("/path/to/oracle8.jar");
URL[] cp = new URL[1];
cp[0] = jar.toURI().toURL();
URLClassLoader ora8loader = new URLClassLoader(cp, ClassLoader.getSystemClassLoader());
Class drvClass = ora8loader.loadClass("oracle.jdbc.driver.OracleDriver");
Driver ora8driver = (Driver)drvClass.newInstance();

Properties props = new Properties();
// "user" instead of "username"
props.setProperty("user", "my-user");
props.setProperty("password", "my-password");
Connection ora8conn = ora8driver.connect("jdbc:oracle:thin:@some-oracle-8-server:port:sid",props);

Machen Sie dann dasselbe für den Oracle 12-Treiber.

Du vielleicht auch weiterhin den "anderen" Treiber über DriverManager verwenden können , aber da bin ich mir nicht sicher.

Es gibt einige Eckfälle, in denen der Zugriff auf Oracle-spezifische Klassen etwas kompliziert wird, aber im Allgemeinen können Sie die dadurch erstellten Verbindungen problemlos verwenden.