Ok, so I ran in to a really odd problem today. One of our servers decided that it wanted to start giving 404 errors on any request after the box was rebooted—it didn't matter if it was a static html page or a dynamic page. If I restarted all the services, things would start working again. This meant though, that if the box was restarted you manually had to run a batch file to recycle the services—which is unacceptable.
After doing some investigation on the box, I learned that the jrun log files in the CFusionMX\runtime\lib\wsconfig\1\ directory were generating lines like the following:
04:03:20 jrISAPI[init] JRun 4.0 (Build 55228) ISAPI Extension - Nov 21 2002 20:12:06 04:03:21 jrISAPI[init] initProxy failed to fetch server properties 04:03:21 jrISAPI[init] could not initialize Server_1:127.0.0.1:51010 04:03:21 jrISAPI[init] Couldn't initialize from remote server, deferring init till request time. 04:03:21 jrISAPI[init] JRun 4.0 (Build 55228) ISAPI Extension - Nov 21 2002 20:12:08 04:03:32 jrISAPI[filter] initProxy failed to fetch server properties 04:03:32 jrISAPI[filter] could not initialize Server_1:127.0.0.1:51010 04:03:32 jrISAPI[filter] Couldn't initialize from remote server, JRun server(s) probably down.These log entries seemed to indicate that the JRun engine was failing to run because the IIS service wasn't running at the time when the "ColdFusion MX Application Server" service was starting. However, after a lot of trial and error (which meant a lot of rebooting,) I was finally able to correct the problem by starting the "World Wide Web Publishing Service" before starting the "ColdFusion MX Application Server" service.
Since I finally was able to figure out the specific order the services needed to be started in, I now had to redo the dependencies for the services so that they'd always start in the right order. The first I took was to open up the "regedt32" application via Window's Start > Run box. You'll need to use "regedt32.exe" because you'll need to create a new "Multi-String Value" (REG_MULTI_SZ) and you can't do that with regedit.exe in Windows 2000 or below.
After opening the program, transverse to the "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ColdFusion MX Application Server\" key and add a new "Multi-String Value" (REG_MULTI_SZ) of "DependOnService". The value of this should be "IISADMIN". Doing this will ensure that the IISADMIN service is loaded before starting the CFMX App Server service. We need to do this, because we're going to change the dependency on the W3SVC (World Wide Web Publishing Service) to make sure that the CFMX App Server service is loaded before trying to start and before starting the W3SVC service, the IISADMIN service must be loaded.
After setting up the CFMX App Server service to be dependent on the IISADMIN service, we can now change the value of the multi-string value "DependOnService" in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\ key from "IISADMIN" to "ColdFusion MX Application Server". Now if you try to start the W3SVC, it'll load the following service in order (if they're not already loaded:)
After making all these changes, I was then able to reboot my server and have the webserver serve pages as expected. I'm still not sure what caused this initial problem to crop up yesterday, but I had made some permission changes to the drives (to lock down the Everyone account) and I had run the remove_ALL_connectors.bat file in order to get "search friendly urls" working properply.
Anyway, hopefully this will help someone else out that has the same problem. I wasn't able to find anything on the web while searching via Google on this problem, but a few people from Macromedia said the problem has popped up on a few people in the past. There didn't seem to be any census on exactly what it would take to fix the problem. I'd also like to thank Dave Watts and Debbie Dickerson who e-mailed me with ideas and suggestions on how to resolve the problem.
11 Comments
Comments for this entry have been disabled.