Free Tools for GIS Developers
  What's New
GIS Tools:
Other Tools:
  The Author
  These Pages
  Best viewed with Mozilla / Firefox; or with IE and the Google Toolbar.

Tomcat Servlet Container for ArcIMS

Alert: Tomcat has come a long way since this was released; the install process is now very easy and the servlet standard, which has evolved significantly in the past several years, is not tracked in this version. It is recommended to use the standard installer; it is only still here because my Scottish ancestry prevents me from getting rid of anything!

Installing ArcIMS is easy. However, when setting up ArcIMS, many people encounter difficulties not with ArcIMS itself, but with the servlet engine and the web server.

This can be made easier using a commercial servlet engine. Two supported commercial servlet engines are New Atlanta ServletExec and Allaire JRun. Both are good products. However, on most platforms, ESRI also supports a free servlet engine, Jakarta Tomcat. Tomcat is actually the reference implementation of the servlet and JSP standards.

Tomcat has its own set of difficulties: until very recently, the installation procedure requires manual editing of configuration files. Although this is still common on UNIX, those coming from a Windows background will see this as a throwback to the dark ages. The manual configuration is error-prone, and many people have difficulty with this. Even after many successful Tomcat installs, I occasionally run into a configuration where something goes wrong. However, over time I have refined an installation procedure that makes this much easier and less error-prone, with lots of checkpoints to make sure everything is working.

I have packaged a copy of Jakarta Tomcat 3.2.4, configured to work out of the box with ArcIMS 3.1, 4.x, or 9.0. There are no dependicies on ArcIMS, although the installation and testing instructions do cover ArcIMS as well. In fact, this Tomcat installation package does not require anything that is not either freely redistributable, or included with your web server. For example, it does not require the Java 2 SDK to be installed on your server; it can use the same Java Runtime that is included on the ArcIMS media, or another Java Runtime that you might have already installed on the server.

[Download Tomcat 3.2.4, preconfigured for Jikes]

Just extract to C:\Tomcat, and follow the directions in INSTALL.txt.

Thanks to SourceForge for making space available for this package.


ArcIMS 4.0.1

The Tomcat 3.2.4 / Jikes installation procedure has been updated for procedure for ArcIMS 4.0.1. Actually, with 4.0.1, Tomcat 3.2.3 is the officially sanctioned release in the Tomcat 3.2 series (as opposed to a more general 3.2.x for previous versions of ArcIMS), but considering that Tomcat 3.2.4 is a bugfix release, and the Jakarta project strongly recommends those using Tomcat 3.2.3 should upgrade to 3.2.4, I will not be downgrading my setup just for ArcIMS. Don't worry, I think they're mainly concerned that you might be running 3.2.1 or 3.2.2, which have more serious bugs. 3.2.4 has been working flawlessly for me in many, many installations.

ArcIMS 9

This installation package will work with ArcIMS 9, but probably requires manual configuration instead of using the automated ArcIMS Post Installation wizard. It isn't hard to set up at all, but isn't as well supported in my instructions and testing procedures as the other ArcIMS versions. This will come in a later revision.

Java Compiler and JSP Support

To support JSP, a Java compiler is required. Normally this means you need to install the Java 2 SDK, and configure Tomcat to use that as its Java runtime. Instead, this version of Tomcat is modified so that its JSP handler uses the IBM Jikes Compiler. Like Tomcat, Jikes is free software. Jikes is much smaller than the Java SDK, and is included in the package. Actually many organizations recommend the use of Jikes in a production environment, since its performance is reportedly much better than the Java SDK's javac compiler.

Later versions of Tomcat

Tomcat has since gone through several releases, including 3.3, 4.0, and 4.1. Until recently, none of this has mattered to ESRI customers because 3.2.x remained the latest supported version. (However, unofficially, many people reported success with 4.0.x.) Now, Tomcat 4.0.5 has become a supported platform for ArcIMS 4.0 on Apache 2 or IIS 5. At ArcIMS 4.0.1, Tomcat 4.0 and 4.1 are both supported.

My advice in the past (prior to this new support) has been that, if you want to use Tomcat as your ArcIMS Servlet Container, you should stick to 3.2.x for production work, so that you can be supported. However, with the recent changes in policy, you can upgrade and remain supported. Please be aware, Tomcat 4.0.5 contains a known security issue. If you install Tomcat 4.0.5, there is a hotfix that you need to apply.

If you are upgrading to Apache 2, you must upgrade your Tomcat to at least 4.0.5 to be running an ESRI-supported configuration. (You can also use my Tomcat 3.2.4 installer with Apache 2. It works fine; ESRI technical support just isn't set up to run that configuration in-house.) Since the Apache group has always considered the Win32 port of Apache 1.3.x to be "beta" quality, and says Apache 2 is as solid on Win32 as it is on Unix, this could be a compelling reason to upgrade both Apache and Tomcat.

Support for JSP taglibs might be another good reason to upgrade. Tomcat 3.x supports JSP 1.1; Tomcat 4.x supports JSP 1.2. The JSP Standard Tag Library requires JSP 1.2, and therefore Tomcat 4. I think JSP is a horrible way to write server-side code, but taglibs make it slightly less bad.

Although there are good reasons to upgrade from Apache 1.3.x and Tomcat 3.2.4, performance is not one of them, at least not for ArcIMS users. That's not to say Tomcat 4.x won't perform better - by most reports, it will. Tomcat 4 is engineered to perform better than Tomcat 3.2.x, but ArcIMS's Application Server architecture means that most of the work happens outside of the servlet container. And let's face it: when you're generating dynamic maps from a live enterprise geodatabase, the servlet container is not going to be the bottleneck, even if it were doing more than just dispatching requests to the App Server. So the effect of Tomcat 4's higher performance won't be very significant.

Future Development - Tomcat 4.1

With ArcIMS 4.0.1, ESRI introduced support for Tomcat 4.1, and this was continued with ArcIMS 9. I plan to update my setup procedure to take advantage of this, and support Tomcat 4.1 on Apache 2 as well as IIS 5. I run Apache 2 and IIS 5 on my workstation, for testing and development, and it would be good if I could run that with a supported version of Tomcat.

I have noticed that Tomcat 4.1 has good, solid support for Jikes as a servlet engine. As such, it should be easier to package up than Tomcat 3.2.4.

4.1 also has an installer, but that has some limitations. First, it works against the JDK, which is not redistributable and can take a long time to download. That is actually not a recommended configuration at all for Tomcat, since the Jakarta group reports known memory leaks when compiling JSPs that way. (The leaks aren't Tomcat's fault - they are in javac - but still they provide yet another reason to use Jikes.)

The Tomcat 4.1 setup wizard also doesn't integrate with IIS, and required manual steps are not well documented o, so I often find myself copying and pasting from my 3.2.4 configuration when it comes to IIS. Also, of course, it doesn't go into ArcIMS configuration and testing. I would rather have a step-by-step procedure for Tomcat 4.1, like I have for 3.2.4, rather than have the first part done by an automated wizard, and then having to resort to ad-hoc configuration and testing for the rest. Logo