1. A computer-implemented method for allowing different instances of an application to execute in different virtual machines, comprising: providing a clustering agent interfacing with a plurality of virtual machines, each virtual machine running at least one instance of the application, each instance of the application accessing a plurality of objects; configuring one or more managed objects selected from the plurality of objects, the managed objects comprising a subset of the plurality of objects, said configuring identifying operations which may affect the one or more managed objects in a each instance of application on each virtual machine; detecting application operations performed on the one or more managed objects by any instance of the application which affect state information of the managed objects; and communicating the application operations detected in one application instance in one virtual machine to a central manager for use in replicating the managed object state information to others of said virtual machines.