IIS IIS7 custom error pages hiding masking tomcat 500 webapp error page jk connector AJP
Problem:
With tomcat integrated into IIS7 using the jk connector error pages from the webapp that have the http-response status set (eg to
500
) get "replaced" with a generic IIS custom error page:500 - Internal server error. There is a problem with the resource you are looking for, and it cannot be displayed
A quick web-search reveals it's a common issue for ASP.NET developers and the solution is simply to make changes to the ASP.NET application config or in code setting a special HttpResponse.TrySkipIisCustomErrors property(!) ... but what are the options for when the pages are being supplied by an ISAPI redirector/plugin (i.e. the JK connector in this case)?
Solution:
Based on the detailed notes on the IIS Blog (What to expect from IIS7 custom error module) the minimal steps required seem to be the following:
Step 1: create a Web.config
file in the root folder of the Web Site
This is the Web Site where you've configured the "jakarta" virtual directory. If it's "Default Web Site" this may be
C:\inetpub\wwwroot
but check the properties to be sure (Right click Web Site > Manage Web Site > Advanced Settings ... and note the setting for 'Physical Path').
Step 2: add configuration to the Web.config
file
<configuration> <system.webServer> <httpErrors errorMode="Detailed" existingResponse="Auto" /> </system.webServer> </configuration>
Step 3: restart the web site
Eg Right click Web Site > Manage Web Site > Restart
Be sure to to test this on the local machine (where IIS7 is installed) and from another machine in the network as IIS may give different error-page behaviour for local and 'remote' requests.