Как разумным образом выбирать во время выполнения среди нескольких служб OSGi?

Я имею в виду интеллектуальную систему, которая может динамически выбирать среди доступных служб OSGi. То есть выберите реализацию или другую в зависимости от некоторого параметра времени выполнения. Например, уведомить работающий алгоритм, который изменяет оператор после нескольких итераций, или в зависимости от балансировки нагрузки в системе или чего-то еще.

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

Мой первый подход - использовать DS для предоставления услуг и связывания служб с 0..n и динамическая политика. Затем от внешнего интеллектуального компонента уведомить алгоритм, который служба использует на каждой итерации (может быть, с помощью EventAdmin ?).

operator[selected].doSomething();

Это может помочь мне снизить сложность, когда необходимо выполнить множество экспериментов с множеством различных реализаций служб. Кроме того, я планирую использовать спецификацию удаленных служб с Eclipse Communication Framework для исследования распределенных алгоритмов и прочего, так что динамическое появление новых реализаций во время выполнения также возможно

Однако я не ' Я не знаю, хорошая ли это идея или существует другой лучший механизм для динамического выбора используемой реализации. Я думаю, что использование ServiceTracker вместо DS - не лучший вариант, но я открыт для предложений :)

Заранее спасибо.

7
задан Pablo García 27 April 2011 в 17:29
поделиться