我正在使用WSO2 Data Services(3.5.1)服務器連接一些Oracle 12c數據庫。但是,爲了支持遺留,我還需要連接到不同的版本,如10g和8i。DSS無法連接到不同的Oracle數據庫版本
有問題,使用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數據庫中設置參數SQLNET.ALLOWED_LOGON_VERSION=8
在Oracle /網絡/管理/ sqlnet.ora文件,並使用ojdbc14.jar
,但由於基礎設施限制,這種做法是不可接受的。
我想知道是否有同時使用DSS兩個驅動程序的方式,也許指定擴展不同OracleDriver
類的一些自定義的Java類,並配置DSS類加載器...或者一些不同的解決方案。
任何幫助,將不勝感激。