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 newretry_interval
. - Allowing the web server to provide error pages instead of Tomcat.