|Perform the following steps to verify your installation of ServletExec (either ISAPI or AS) with Microsoft IIS:
- Completely stop the JVM in which SE is running.
For SE ISAPI this means completely stopping IIS. The procedure for completely stopping IIS may differ depending on your IIS version:
If using IIS 7 (2008/Vista) and SE ISAPI then see section 188.8.131.52 of the SE 6.0 User Guide.
- If using IIS 6.0, IIS 5.0, or IIS 4.0, you can completely stop IIS by stopping the IIS Admin Service from the Services Control Panel or by using the stop_iis.bat command file (located in the bin folder where ServletExec was installed) or by using the Restart IIS command from the Internet Services Manager.
For SE AS and IIS see section 1.2.2 of either the SE 6.0 User Guide, or the SE 5.0 User Guide.
- Verify that a valid JDK or JRE is installed on your machine. If not, then reinstall the JDK or JRE.
- Make sure the SE DLL file [ServletExec_ISAPI.dll or ServletExec_Adapter.dll] is installed in the ...\InetPub\Scripts directory.
- Follow the steps in Chapter 2 of the Installation Guide to verify ServletExec is configured as an ISAPI filter and that it is has the correct path to ServletExec_ISAPI.dll [or ServletExec_Adapter.dll] If you had previously installed a different servlet engine then verify it is not configured as an ISAPI filter (you can't have two servlet engines installed as ISAPI filters or they'll conflict).
The ServletExec Filter should show with a Green Arrow pointing up.
- If using SE ISAPI, then read all of FAQ #60 (especially the last half of that FAQ) and follow the 8 steps given there. FILE PERMISSIONS ARE THE MOST COMMON REASON FOR SE ISAPI INSTALLATION PROBLEMS
- If using IIS 6 (Win 2003, SE 5.0 or higher) then you should also check the Web Service Extensions listed in the Internet Service Manager to ensure that ServletExec is listed as a Web Service Extension whose status is "Enabled". Here you should also open the properties of that Extension and view the "Required Files" tab to ensure that the path to the ServletExec DLL file shown there is correct. In other words, make sure that IIS is pointing to a path that actually exists on your hard drive.
If using IIS 7 (Win 2008/Vista) then please read section 2.5.3 of the SE 6.0 Installation Guide.
You should also ensure that the user specified as the application pool identity for ServletExec has read/write permission to BOTH:
- The SE installation directory (and all it's subdirectories and subfiles)
- The SE DLL file and the folder in which it resides
Here is how to figure out what user were talking about:
- In the Internet Service Manager, open the Properies dialog for "Application Pools"
- Find the User on the "Identity" tab. In our tests this was the User named "Network Service" in the drop-down list associated with the radio button labeled "predefined"
- Then check physical file permissions on the SE installation directory and all its subdirectories and subfiles to ensure that that user has read/write permission
Verify that each IIS web site which needs to use ServletExec has a virtual directory (VD) with the following Execute Permissions:
- "Scripts and Executables" if using IIS 5.0 or higher (Win 2k, 2003)
- "Execute (including script)" if using IIS 4.0 (Windows NT)
For SE ISAPI, this VD could have any name you wish. Traditionally it is named "Scripts", but could be named "ServletExec" or whatever else you like. If using SE AS, this VD *must* be named "Scripts".
For more details please read section 2.5.3 of the SE 6.0 Installation Guide.
Note: This is not a physical folder on your hard drive.
The VD must map to the physical directory which contains SE DLL file (by default this is the ...\InetPub\Scripts\ directory). You can verify that the VD is pointing to the correct physical folder by opening the Microsoft Management Console (also called the Internet Service Manager or the MMC) and selecting the VD in the left pane for each IIS web site. In the right pane you should see ServletExec_ISAPI.dll or ServletExec_Adapter.dll for each IIS website that you want to use SE.
More details about this can be found in FAQ #54
Verify the SYSTEM account, IUSR_xxx account (and if using BASIC authentication... the account that will be assigned to the ServletExec admin pages) has read/write access to all of the files and directories under the ...\InetPub\Scripts\ directory. You may also need to check this for the web.xml files used by your web applications (or .war file(s) if your apps are in .war file form).
In fact you should consider performing the 8 steps given in FAQ #60 using the group named EVERYONE as a test to rule out file permissions as the problem.
- For IIS 4.0 only, open the Properties dialog for the VD and verify that the 'Name' parameter under the Application Settings header is not greyed out. If it is greyed out, then select Create, Apply and OK. If you are unable to do this then most likely you have a bad installation of IIS 4.0. Customers who have seen this problem have fixed it by re-installing IIS 4.0 and ServletExec.
- Launch the DBMON application that is installed with ServletExec. Restart the IIS admin service. If error messages appear in the DBMON console then send them to firstname.lastname@example.org. Note that you should at least see some ServletExec initialization messages. The only exception to this is if you are using Windows 2003 (formerly called Windows .NET) in which case you won't see any SE startup messages until IIS receives its first request, so in that case you'd need to open your web browser and try requesting one of the following URLs:
If you don't see any messages then:
- Note that DBMON will not show you anything if you are accessing the machine remotely via terminal services or possibly other remote access software. See FAQ #187 for more information about this and a workaround.
- If your not running DBMON remotely, then use the Event Viewer to check for web server error events. If you find any then send the data to email@example.com.
If there are no error messages and ServletExec shuts down after the first request then give Everyone Full Control permission to the physical Scripts folder and the SE DLL file. Then, reinitialize ServletExec. If this fixes the problem, you can fine-grain permissions as discussed in section 2.7 of the ServletExec 4.x or 5.x Installation Guide.
Note that if the JVM is able to start up then any messages seen in DBMON may also appear in ServletExec.log with the added benefit of timestamps.
If you have tried all of the things above and yet you are still seeing 1 or more of the following symptoms:
- The response you get in your browser after requesting a servlet includes the words ServletExec Initialization Failed
- DBMON shows SE shutdown messages at the moment you make a servlet request, showing that SE was shutdown by IIS, abruptly due to the request
then there may be a setting within you IIS that needs to be changed.
To find out, and to set it correctly, you should perform the following steps at both the Global/Master IIS level and also at the individual website level (for each website):
- In the IIS manager access the "Home Directory" tab
- On that tab click the "Configuration..." button
- The checkbox there labeled "Cache ISAPI Applications" should be checked. If it isn't then check/enable it.
- Repeat the 3 steps above in all the various locations within the IIS manager [both the Master IIS level and the individual website level(s)]
- Then cycle the IIS admin service and try to request a servlet
If you've tried everything above, and still your SE does not work with IIS, then you should review FAQ #280 to see if it applies in your case.
Note that FAQ #280 was written with the installer in mind, but the whole "DEP" concept may still be the culprit that's preventing your IIS (or SE) from running properly after it's been installed.
Special Note to those trying to use SE ISAPI with IIS 6 on Win 2003:
If you have gone through all the steps above, and are certain that everything is as it should be, and yet
your attempts to run a servlet result in the following sort of response in your browser:
"The page cannot be found"
(with HTTP 400 - Bad Request at the bottom of the page)
Then you should consider trying this:
- Access the IIS Management Console
- Right-click on "Web Sites" and open its Properties dialog
- On the "Service" tab of that dialog check "Run WWW service in IIS 5.0 isolation mode"
- Save the change, and then stop the IIS admin service
- Start your IIS website and try to request a servlet
We recommend that this approach be used as a last resort only, since we've only had 3 customers
report that it was even needed. It is our belief that these steps would only be needed in very
rare cases, and it is our experience that the steps given in the main body of this FAQ
clear up the more common SE ISAPI problems seen by users.