¿Cómo elegir en tiempo de ejecución entre varios servicios OSGi de manera inteligente?

Tengo en mente un sistema inteligente que puede elegir dinámicamente entre los servicios OSGi disponibles. Es decir, elija una implementación u otra dependiendo de algún parámetro de tiempo de ejecución. Por ejemplo, notifique a un algoritmo en ejecución que cambie un operador después de varias iteraciones, o dependiendo del equilibrio de carga en un sistema o lo que sea.

while(stopCriterion){
    operator.doSomething(); //There exist many operator implementations
}

Mi primer enfoque es usar DS para exponer los servicios y vincular servicios con 0..n ydinámic política. Luego, desde una @ exterinteligent componente, notifique al algoritmo qué servicio usa en cada iteración (usando EventAdmin, ¿tal vez?)

operator[selected].doSomething();

Esto podría ayudarme a reducir la complejidad cuando se deben ejecutar muchos experimentos con muchas implementaciones de servicios diferentes. Además, planeo usar la especificación de Servicios remotos conEclipse Communication Framework para investigar algoritmos distribuidos y esas cosas, por lo que también podría ser posible la aparición dinámica de nuevas implementaciones en tiempo de ejecuci

Sin embargo, no sé si es una buena idea o si existe otro mecanismo mejor para seleccionar dinámicamente qué uso de implementación. Creo que usando ServiceTracker en cambio, DS no es una buena opción, pero estoy abierto a sugerencias:)

Gracias por adelantado

Respuestas a la pregunta(2)

Su respuesta a la pregunta