In this paper we show how to reduce downtime of J2EE applications by rapidly and automatically recovering from transient and
intermittent software failures, without requiring application modifications. Our prototype combines three application-agnostic
techniques: macroanalysis for fault detection and localization, microrebooting for rapid recovery, and external management
of recovery actions. The individual techniques are autonomous and work across a wide range of componentized Internet applications,
making them well-suited to the rapidly changing software of Internet services. The proposed framework has been integrated
with JBoss, an open-source J2EE application server. Our prototype provides an execution platform that can automatically recover
J2EE applications within seconds of the manifestation of a fault. Our system can provide a subset of a system's active end
users with the illusion of continuous uptime, in spite of failures occurring behind the scenes, even when there is no functional
redundancy in the system.