The Java programming language is increasingly used in the implementation of servers with stringent availability, reliability, and performance requirements. Our Java Application Supervisor (JAS) software system is an attachment to a Java runtime environment that enhances the availability of a target Java program. To this end, JAS automatically detects and resolves certain reliability and performance problems during the execution of the target program. JAS does not require any source or byte code modifications in the target program. Instead, JAS is configured for a target program by supplying simple policies that determine how JAS reacts to problems during the target program execution. JAS typically imposes little execution time and memory overhead on the target program. We describe an experiment with a Web proxy that 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 averagerequest 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 © 2001 John Wiley & Sons, Ltd.
[1]
Bernhard Plattner.
Real-Time Execution Monitoring
,
1984,
IEEE Transactions on Software Engineering.
[2]
Kenneth P. Birman,et al.
Tools for distributed application management
,
1991,
Computer.
[3]
Stefano Ceri,et al.
Execution monitoring and debugging tool for Ada using relational algebra
,
1985
.
[4]
Yennun Huang,et al.
Software Fault Tolerance in the Application Layer
,
1995
.
[5]
Flaviu Cristian,et al.
Exception Handling and Tolerance of Software Faults
,
1995
.
[6]
Reinhard Klemm.
WebCompanion: A Friendly Client-Side Web Prefetching Agent
,
1999,
IEEE Trans. Knowl. Data Eng..
[7]
Michael R. Lyu.
Software Fault Tolerance
,
1995
.