IDM Driver fails to auto-start
20/09/07 18:03 Filed in: Novell
I had an interesting problem a few weeks ago with an
IDM 3.0.1 driver on one of my NetWare 6.5 servers.
While all drivers in the driver set on the particular
server were set to auto-start, one of them refused to
do so. After doing some digging it appears that
drivers start in the order of creation time. The
first driver created is the first to load. I verified
this by looking at the driver logs. The driver I was
having trouble with, was the first driver created in
this driver set.
So what could be causing the first driver to fail to start but the second, and subsequent others, to load just fine?
The core of IDM is DIRXML.NLM which is loaded automatically by DS.NLM which is in turn automatically loaded when the SYS: volume is mounted. Working backwards, IDM uses JAVA to run the drivers. So if JAVA is not loaded or finished loading by the time DIRXML is trying to load the drivers it will fail. In my case, DIRXML was loading the first driver before JAVA was ready.
But if it's all loading automatically how do you ensure JAVA is ready for DIRXML?
Easy.
DS.NLM is loading DIRXML.NLM, so if you rename DIRXML.NLM to DIRXMLA.NLM, DS will not be able to find it and not load it. Now that we have stopped DIRXML from loading we need to wait for JAVA to finish. This is accomplished by ensuring load statements for JAVA (tomcat) are as early in the AUTOEXEC.NCF file as possible. Then add a DELAY command at the end of the AUTOEXEC.NCF, followed by the load command for the DIRXMLA.NLM file. Something like this...
DELAY 30
LOAD DIRXMLA.NLM
DELAY 30 will put a pause in the execution for 30 seconds before continuing with the next line. This should be plenty of time for JAVA to finish loading.
DIRXMLA.NLM will then load and start all the drivers.
As simple as that.
So what could be causing the first driver to fail to start but the second, and subsequent others, to load just fine?
The core of IDM is DIRXML.NLM which is loaded automatically by DS.NLM which is in turn automatically loaded when the SYS: volume is mounted. Working backwards, IDM uses JAVA to run the drivers. So if JAVA is not loaded or finished loading by the time DIRXML is trying to load the drivers it will fail. In my case, DIRXML was loading the first driver before JAVA was ready.
But if it's all loading automatically how do you ensure JAVA is ready for DIRXML?
Easy.
DS.NLM is loading DIRXML.NLM, so if you rename DIRXML.NLM to DIRXMLA.NLM, DS will not be able to find it and not load it. Now that we have stopped DIRXML from loading we need to wait for JAVA to finish. This is accomplished by ensuring load statements for JAVA (tomcat) are as early in the AUTOEXEC.NCF file as possible. Then add a DELAY command at the end of the AUTOEXEC.NCF, followed by the load command for the DIRXMLA.NLM file. Something like this...
DELAY 30
LOAD DIRXMLA.NLM
DELAY 30 will put a pause in the execution for 30 seconds before continuing with the next line. This should be plenty of time for JAVA to finish loading.
DIRXMLA.NLM will then load and start all the drivers.
As simple as that.
|
