2008 News and Status

2008 News & Status

28 October - JK-1.2.27 released

The Apache Tomcat team is proud to announce the immediate availability of Tomcat Connectors 1.2.27. This is a stable release adding lots of new features and some bug fixes.

Please see the ChangeLog for a full list of changes.

If you find any bugs while using this release, please fill in the Bugzilla Bug Report.

The most important new features in this version are:

Watchdog Thread for Periodic Tasks

The connector has to run some periodic tasks independant of request processing. Examples are probing or closing down idle backend connections, adjusting load numbers and recovering workers from error state.

Before version 1.2.27 these tasks were done inside the request processing loop. When a new request came in and the task was due, the thread handling the request first executed the internal task and then handled the request. If there were no requests coming in, the tasks would not run. If any of the tasks took unexpectedly long, the response time of the request waiting for the finishing of the task went up.

Starting with this release you can configure a separate watchdog thread inside the web server to run all those tasks independantly of request processing. This new feature is avaliable for the connector when used with Apache httpd 2.x or with Microsoft IIS. To keep the behaviour of the new version consistent with previous releases, this feature is turned off by default. You can activate the watchdog thread via JkWatchdogInterval for Apache or watchdog_interval for IIS.

Connection Probing

In previous releases connection probing (checking whether connections still work) could only be done immediately after a new connection was established and directly before sending each request. Since we now have the watchdog thread available, we also added a periodic probing option, which you can activate with the worker attribute ping_mode. This will also be useful as a protection against the infamous firewall idle connection drop.

The older attributes connect_timeout and prepost_timeout still exist and work the same way they did in previous releases. Since there are now three different probing options, we recommend to migrate your configuration to the newer attributes ping_mode, ping_timeout and connection_ping_interval.

Mount Extensions

Usually one defines workers and mounts for the connector. A worker defines a backend we want to talk to and the configuration parameters of the communication, connection pools etc. The mounts define which URIs we want to forward to which worker (so we also call a mount an URI map rule). In version 1.2.27 you can overwrite certain worker parameter per mount.

One easy to understand example is reply timeouts. Until this release you had to specify a reply timeout for the whole worker. But reply times depend a lot on the type of request. So normally you want to define a general reply timeout and for some special URLs you need to relax the reply timeout, because you know those URLs take much longer to process (like e.g. reporting or other compute intensive tasks).

Another possible case is the activation status. You might use a load balancer worker to forward requests to certain webapps in a farm of Tomcat nodes. If you wanted to update some webapp on one node, you previously had to stop forwarding requests for all webapps on this Tomcat node. What was not possible until now, was stopping forwarding requests restricted to the webapp and the node you wanted to update.

Starting with this release, you can add so-called rule extensions to your uriworkermap file to influence worker parameters per mount. This will work for all Apache versions and for IIS. Remember, that the uriworkermap file automatically gets reloaded after changes without web server restart.

Improved IIS support

We improved IIS support im various ways. It is now possible to use multiple IIS 6 application pools with the ISAPI redirector.

Furthermore some improvements were added as compile time features. The most notable one is chunked encoding support, which was a major refactoring and is therefore still considered experimental. You can download binaries with and without chunked encoding support. In future versions, chunked encoding will likely be availabe in all builds.

Another new feature is an elegant way of configuring error page redirects. All new features are documented on the documentation page about configuring IIS.

Enhanced Status Worker

The status worker now can also manage and show statistics for AJP workers that are not part of a load balancer. Other improvements are the new dump action, the integration of the new configuration attributes, showing average request and transfer rates since the last statistics reset and the ability to display only a single member of a load balancer.

Unfortunately we had to change some request parameters used for the update action of the status worker.

Miscellaneous Improvements

Further enhancements are:

  • Configurable session stickyness indicator: cookie name and URL path parameter name can be freely chosen instead of the servlet spec compliant JSESSIONID and ;jsessionid.
  • Automatically determining the size of the shared memory segment needed to accommodate all workers.
  • New connection establishment timeout socket_connect_timeout.
  • New timeout connection_acquire_timeout for acquiring a free connection from the pool.
  • Improved retry handling by adjusting the meaning of the attribute retries for AJP workers and for load balancers and by adding the new retry_interval.
  • Allowing the web server to provide error pages instead of Tomcat.