我正在使用Oracle (3.5.1)服务器连接一些WSO2 12c数据库。然而,为了支持传统,我还需要连接到不同的版本,如10g和8i。
这里有一个问题,使用ojdbc14.jar驱动程序,数据源:
8i工作
10g工作
12c给出:ORA-28040: No matching authentication protocol (由于12版本中SHA算法的变化)
使用ojdbc6.jar或ojdbc7.jar
10g工作
12c工作
8i提供了:
org.wso2.carbon.ndatasource.common.DataSourceException: Error establishing data source connection: 4
...
Caused by: java.sql.SQLException: 4
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:290)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702)
...
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
at oracle.jdbc.driver.T4C8TTIdty.<init>(T4C8TTIdty.java:491)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1434)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)
...在寻找解决方案时,我找到了一些替代方案,通过在12c数据库的oracle/network/admin/sqlnet.ora文件中设置参数SQLNET.ALLOWED_LOGON_VERSION=8并使用ojdbc14.jar,但由于基础架构的限制,这种方法是不可接受的。
我想知道是否有一种方法可以在决策支持系统中同时使用这两个驱动程序,也许可以指定一些自定义Java类来扩展不同的OracleDriver类,并配置决策支持系统类加载器……或者一些不同的解决方案。
任何帮助都将不胜感激。
https://stackoverflow.com/questions/39727205
复制相似问题