IDM driver will not start 9005

  • 7003964
  • 23-Jul-2009
  • 26-Apr-2012

Environment

Novell Identity Manager
Novell Identity Manager Driver

Situation

After upgrading eDirectory from 8.7.3.x to 8.8.x the JDBC driver will not start.  An error similar to the following (though not exactly the same) will appear:

Status:   Fatal
     Message:  Code(-9005) The driver returned a "fatal" status indicating that the driver should be shut down. Detail from driver: <description>Unable to load third-party JDBC driver:  'oracle.jdbc.driver.OracleDriver'.</description>
<jdbc:exception jdbc:class="java.lang.ClassNotFoundException" xmlns:jdbc="urn:dirxml:jdbc">
       <jdbc:message>oracle.jdbc.driver.OracleDriver</jdbc:message>
</jdbc:exception>
 
If other drivers exist they may start depending on whether or not they are affected by a similar issue.

Resolution

This is caused by the change to the location of the 'dirxml/classes' directory when eDirectory was upgraded from 8.7.x to 8.8.x on a Linux/Unix platform.  All the needed JAR files are copied over to the new location except for any non-Novell files which were used by the driver configuration.  NetWare is not affected as the file locations for classes do not change between eDirectory versions.  JDBC drivers are especially affected by this as they always have a third-party JAR file provided by the database vendor (ojdbc14.jar for Oracle, jtds.jar for MSSQL, mysql.jar for MySQL, etc.).  Any other driver can also be affected if it uses non-standard classes in the driver configuration for special operations as determined by the administrator.  Any class used by IDM but that was not shipped as part of the IDM engine may be the cause for this issue.

To fix the problem copy over the missing JAR file from the old /usr/dirxml/classes directory to the new /opt/novell/eDirectory/lib/dirxml/classes directory.  Once done the driver should start though if it does not then try restarting eDirectory.
 
To determine which file is missing search through each JAR file in the original 'classes' directory and find the one that has the missing class which is listed in the error message.  A simple command to search for a given class ('ClassName') within a single JAR file follows:

unzip -t /path/to/the/file.jar | grep ClassName
 
This command only does one file at a time.  Usually the old classes directory will have all the jar files removed except for the custom ones so there are only a few to check.