Environment
Novell Identity Manager 3.5.1
Novell Identity Manager 3.6
Novell Identity Manager Drivers
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>
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 .
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:
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 .
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 .