4.3 sp3 Cluster nodes defaulting to JTDS driver.

Document ID : KB000113136
Last Modified Date : 22/10/2018
Show Technical Document Details
Issue:
When installing a cluster in 4.3 sp3 if Node 1 was initially installed as a Stand-Alone Domain Orchestrator using the Microsoft JDBC driver, and then a Reinstall is run to convert to a Cluster, other nodes will not properly pick up the MS SQL JDBC Driver setting and will instead attempt to use the jtds driver.

This will cause the startup of Node 2 will fail.  From the boot.log we can see it is attempting to use the JTDS Driver instead of the MS SQL JDBC Driver:

12:30:46,812 INFO  [SystemPropertiesInitializer] Initialising System properties for PAM
12:30:46,968 ERROR [SystemPropertiesInitializer] SQL Error occured while preparing properties table due to
java.sql.SQLException: Failed to load driver class: net.sourceforge.jtds.jdbc.Driver
    at com.ca.util.ClusterConfigurationMgrUtil.getConnection(ClusterConfigurationMgrUtil.java:71)


This issue will only appear under the following narrow conditions:
1. Version 4.3 SP3
2. Initial install done as a stand alone, non-clustered Domain Orchestrator.
2. The MS SQL JDBC Driver is selected as the JDBC Driver.
3. A reinstall is done to reset the environment from a Stand-Alone Domain Orchestrator to a Clustered Domain Orchestrator.
Resolution:

To resolve this, first verify that the MSSQL JDBC Driver, "mssql-jdbc-6.1.0.jre7.jar" is located in the following 2 directories on the cluster node:

\CA\PAM\server\c2o\ext-lib\
\CA\PAM\server\c2o\.c2orepository\.c2oserverresources\lib\

If they do not exist, locate and copy mssql-jdbc-6.1.0.jre7.jar from the original Node. 


Once the jar is in place open the secondary Node's \pam\server\c2o\.config\OasisConfig.properties file in a text editor. 
There are 11 lines that reference the JTDS driver and will need to be corrected.   Please update the OasisConfig to comment out the incorrect values and replace with MS SQL JDBC Driver details.   

Line numbers shown below are to be used as a guide, the specific line numbers will vary slightly in each OasisConfig.properties file.
If your MS SQL Database uses a Port other than 1433 please ensure that is correct before saving the changes.



    Line 24:
#oasis.database.connectionurl=jdbc:jtds:sqlserver://{MSSQL_Database_Host}:1433;databaseName=
oasis.database.connectionurl=jdbc:sqlserver://{MSSQL_Database_Host}:1433;databaseName=

    Line 32:
#oasis.database.driver=net.sourceforge.jtds.jdbc.Driver
oasis.database.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

    Line 42:
#oasis.database.datasource.class=net.sourceforge.jtds.jdbcx.JtdsDataSource
oasis.database.datasource.class=com.microsoft.sqlserver.jdbc.SQLServerXADataSource

    Line 46:
#oasis.database.additionalparamurl=;responseBuffering=full;SelectMethod=cursor;socketTimeout=0
oasis.database.additionalparamurl=;responseBuffering=full;SelectMethod=cursor;MultiSubnetFailover=True;

    Line 64:
#oasis.reporting.database.driver=net.sourceforge.jtds.jdbc.Driver
oasis.reporting.database.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

    Line 72:
#oasis.reporting.database.connectionurl=jdbc:jtds:sqlserver://{MSSQL_Database_Host}:1433;databaseName=
oasis.reporting.database.connectionurl=jdbc:sqlserver://{MSSQL_Database_Host}:1433;databaseName=

    Line 78:
#oasis.reporting.database.additionalparamurl=;responseBuffering=full;SelectMethod=cursor;socketTimeout=0
oasis.reporting.database.additionalparamurl=;responseBuffering=full;SelectMethod=cursor;MultiSubnetFailover=True;

    Line 96:
#oasis.runtime.database.driver=net.sourceforge.jtds.jdbc.Driver
oasis.runtime.database.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

    Line 106:
#oasis.runtime.database.datasource.class=net.sourceforge.jtds.jdbcx.JtdsDataSource
oasis.runtime.database.datasource.class=com.microsoft.sqlserver.jdbc.SQLServerXADataSource

    Line 110:
#oasis.runtime.database.connectionurl=jdbc:jtds:sqlserver://{MSSQL_Database_Host}:1433;databaseName=
oasis.runtime.database.connectionurl=jdbc:sqlserver://{MSSQL_Database_Host}:1433;databaseName=

    Line 114:
#oasis.runtime.database.additionalparamurl=;responseBuffering=full;SelectMethod=cursor;socketTimeout=0
oasis.runtime.database.additionalparamurl=;responseBuffering=full;SelectMethod=cursor;MultiSubnetFailover=True;