Supporting component-based failover units in middleware for distributed real-time and embedded systems