Persistent components are provided across both process and server
failures, without the application programmer needing take actions for
component recoverability. Application interactions with a stateful
component are transparently intercepted and stably logged to persistent
storage. A "virtual" component isolates an application from component
failures, permitting the mapping of a component to an arbitrary
"physical" component. Component failures are detected and masked from the
application. A virtual component is re-mapped to a new physical
component, and the operations required to recreate a component and
reinstall state up to the point of the last logged interaction is
replayed from the log automatically.