An Adaptive Fault Tolerant and QoS-Enabled Middleware Support in Distributed Systems