IDM Driver fails to auto-start

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.
|