I'm using the WSO2 Data Services (3.5.1) Server to connect with some Oracle 12c databases. However, to support the legacy, I also need to connect to different versions like 10g and 8i.
There's the problem, using the ojdbc14.jar driver, the datasources:
8i works
10g works
12c gives: ORA-28040: No matching authentication protocol (due the changes of SHA algorithm in the version 12)
Using the ojdbc6.jar or ojdbc7.jar:
10g works
12c works
8i gives:
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)
...
Searching for solution, I've found some alternative, by setting the parameter SQLNET.ALLOWED_LOGON_VERSION=8 in the oracle/network/admin/sqlnet.ora file in the 12c database and using ojdbc14.jar, but due infrastructure restrictions, this approach is not acceptable.
I would like to know if there's a way to use simultaneously both drivers in DSS, maybe specifying some custom Java class extending the different OracleDriver class, and configuring the DSS class loader... or some different solution.
Any help would be appreciated.