The Java programming language is increasingly used in the implementation of
servers with stringent availability, reliability, and performance requirem
ents. Our Java Application Supervisor (JAS) software system is an attachmen
t to a Java runtime environment that enhances the availability of a target
Java program. To this end, JAS automatically detects and resolves certain r
eliability and performance problems during the execution of the target prog
ram, JAS does not require any source or byte code modifications in the targ
et program. Instead, JAS is configured for a target program by supplying si
mple policies that determine how JAS reacts to problems during the target p
rogram execution. JAS typically imposes little execution time and memory ov
erhead on the target program. We describe an experiment with a Web proxy th
at exhibits reliability and performance problems under heavy load. In this
experiment, running the proxy in conjunction with JAS increased the rate of
successful requests to the proxy by 33% and decreased the average request
processing time by 22%, JAS was also used successfully in two Java servers
at Bell Labs to monitor server reliability and performance and ensure long-
term availability. Copyright (C) 2001 John Wiley & Sons, Ltd.