Explaining -9010 errors on IDM engine and drivers

  • 7002952
  • 09-Apr-2009
  • 26-Apr-2012

Environment

Novell Identity Manager 3.5.1
Novell Identity Manager 3.6
Novell Identity Manager Drivers

Situation

When looking at IDM traces for different scenarios, there is a message such as:

Message: Code(-9010) An exception occurred: <Java error message and possibly Java stack here>

or as:

Message: Code(-9010) An exception occurred: novell.jclient.JCException: <eDirectory/NMAs/PKI error message here>

Resolution

  The -9010 error code just means that an Java exception occurred and was not treated by the IDM code. Java programming knowledge is useful to understand the nature of the problem and its fix, but not mandatory in most cases. To solve issues derived of -9010 errors we need to look into the java error message.

  If the Java error message starts with java.lang. then a description of the Exception shown can be found in Sun's Java documentation.
  For example, the message java.lang.NoClassDefFoundError is explained in Sun's documentation at this URL: http://java.sun.com/javame/reference/apis/jsr219/java/lang/NoClassDefFoundError.html

  If the Java error message starts with com.novell.nds.dirxml.driver. , it is usually a problem with a specific driver's shim.
  In the last page of Remote Loader's documentation we have a table of base classes and the driver shims they refer to. Check URL https://www.novell.com/documentation/idm36/idm_remoteloader/data/bs0q40g.html for that list on IDM 3.6 (scroll all the way to the bottom of the page).
 
  If the Java error message starts with com.novell.nds.dirxml. but is not followed by the keyword driver, then the issue is in the IDM engine, usually on the processing of a specific piece of logic (rule condition or action). Finding in the IDM trace exactly where the error was first issued will allow you to know which part of the logic caused the problem.

  If the Java error message starts with novell.jclient.JCException , then the issue is an eDirectory or NMAS issue, and the text right after the Java error message will be an eDirectory (or NMAS) error that can be researched at https://support.novell.com .

  Sometimes we will have a Java stack along with the error message. The top-most line in the stack is the one we need to focus. So the line java.lang.NoClassDefFoundError: com/novell/nds/dirxml/driver/soap/util/Tracer would be the actual error in this sample stack:

Error: java.lang.NoClassDefFoundError: com/novell/nds/dirxml/driver/soap/util/Tracer
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:282)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at com.novell.nds.dirxml.remote.loader.Driver.<init>(Driver.java:67)
    at com.novell.nds.dirxml.remote.loader.RemoteLoader.newDriver(RemoteLoader.java:1017)
    at com.novell.nds.dirxml.remote.loader.HybridRemoteLoader.start(HybridRemoteLoader.java:99)
    at com.novell.nds.dirxml.remote.loader.RemoteLoader._main(RemoteLoader.java:121)
    at com.novell.nds.dirxml.remote.loader.HybridRemoteLoader.main(HybridRemoteLoader.java:33)

  Still looking at the sample stack above, the codepath executed by IDM all the way to when the problem occured can be seen by reading the stack from bottom-up. So we started in the Remote Loader's main function - see line: at com.novell.nds.dirxml.remote.loader.HybridRemoteLoader.main(HybridRemoteLoader.java:33) - and walking the stack upwards we can see that IDM tried to load another Java class - starting at line: at java.lang.ClassLoader.loadClass(ClassLoader.java:235) - and finally failed in attempting to do so - line: java.lang.NoClassDefFoundError: com/novell/nds/dirxml/driver/soap/util/Tracer .

Additional Information

  Here are some common -9010 messages and their troubleshooting steps.

  1) Error: java.lang.NoClassDefFoundError: , followed by a class path and name. This means that either we are missing the class information on the driver's properties, Driver Module section, or that we are missing one (or more) jar files (or library files) needed by IDM to work properly.
  If a jar (or library) file is missing, reinstalling the package that should contain it and checking the Driver's docs for instructions on copying 3rd party files are the steps to solve the issue.
  If the class information is missing on the driver's properties, the proper class information is listed in each IDM's version documentation, in the end of the remote loader documentation. Below is a table with class names and driver names from IDM 3.6.0 docs:

Java Class Name
Driver
 com.novell.nds.dirxml.driver.avaya.PBXDriverShim Avaya* PBX Driver
 com.novell.nds.dirxml.driver.delimitedtext.DelimitedTextDriver Delimited Text Driver
 com.novell.nds.dirxml.driver.nds.DriverShimImpl eDirectory Driver
 com.novell.nds.dirxml.driver.entitlement.EntitlementServiceDriver Entitlements Service Driver
 com.novell.gw.dirxml.driver.gw.GWdriverShim GroupWise® Driver
 com.novell.nds.dirxml.driver.jdbc.JDBCDriverShim JDBC* Driver
 com.novell.nds.dirxml.driver.ldap.LDAPDriverShim LDAP Driver
 com.novell.nds.dirxml.driver.loopback.LoopbackDriverShim Loopback Driver
 com.novell.nds.dirxml.driver.manualtask.driver.ManualTaskDriver Manual Task Driver
 com.novell.nds.dirxml.driver.notes.NotesDriverShim Notes Driver
 com.novell.nds.dirxml.driver.psoftshim.PSOFTDriverShim PeopleSoft* Driver
 com.novell.nds.dirxml.driver.SAPShim.SAPDriverShim SAP HR Driver
 com.novell.nds.dirxml.driver.sapusershim.SAPDriverShim SAP User Management Driver
 com.novell.nds.dirxml.driver.soap.SOAPDriver SOAP Driver
 com.novell.idm.driver.ComposerDriverShim User Application
 be.opns.dirxml.driver.ars.arsremedydrivershim.ARSDriverShim Driver for Remedy* ARS
 com.novell.nds.dirxml.driver.workorder.WorkOrderDriverShim WorkOrder Driver
 com.novell.idm.drivers.idprovider.IDProviderShim ID Provider Driver


 
  2) Code(-9010) An exception occurred: novell.jclient.JCException: , followed by an text message and eDirectory error code. Read on the eDirectory error code here: https://www.novell.com/documentation/nwec/nwec/data/alwxsrr.html or if its an NMAS error code, it should be listed here: https://www.novell.com/documentation/nwec/nwec/data/al3r5be.html . Most of the errors will have been caused by bad logic on the driver, so after understanding the meaning of the error received usually a review of the driver's logic is needed to pinpoint the problem and then fix the driver's logic.

  3) Code(-9010) An exception occurred: java.lang.OutOfMemoryError . This means that IDM exhausted the available Java Heap and run out of memory. The solution is to increase the Java Heap.
  On IDM 3.5.1 and prior that entitles making changes that are OS specific, those changes are outlined in KB 3732231.
  On IDM 3.6.0 and later it can be changed directly in the driverset. To do so, follow the instructions at https://www.novell.com/documentation/idm36/idm_common_driver/data/bg0n8f8.html .