Mam na myśli inteligentny system, który może dynamicznie wybierać spośród dostępnych usług OSGi. To znaczy wybierz implementację lub inną zależnie od jakiegoś parametru środowiska wykonawczego. Na przykład powiadomić działający algorytm, który zmienia operatora po kilku iteracjach lub w zależności od równoważenia obciążenia w systemie lub cokolwiek innego.Jak wybrać w środowisku wykonawczym kilka usług OSGi w inteligentny sposób?
while(stopCriterion){
operator.doSomething(); //There exist many operator implementations
}
Moje pierwsze podejście jest użycie DS narazić usług i powiązać usługi z 0..N i dynamicznego polityki. Następnie, z zewnętrznego komponentu inteligentnego, powiadom algorytm, który serwis używa w każdej iteracji (przy użyciu EventAdmin, może?).
operator[selected].doSomething();
Pomoże mi to zmniejszyć złożoność, gdy trzeba wykonać wiele eksperymentów z wieloma różnymi implementacjami usług. Również Mam zamiar użyć specyfikację zdalnych usług z Eclipse Communication Framework zrobić badania w rozproszonych algorytmów i takie rzeczy, więc dynamicznie pojawienie się nowych wdrożeń w czasie wykonywania może być również możliwe
Jednak nie wiem, czy jest to na Dobry pomysł lub istnieje inny, lepszy mechanizm do dynamicznego wyboru, którego zastosowania implementacji. Myślę, że używanie usługi ServiceTracker zamiast tego nie jest dobrym rozwiązaniem, ale jestem otwarty na sugestie :)
Z góry dziękuję.
Cześć Andy. Podoba mi się twój pomysł pośredniej selekcji, aby wybrać odpowiednią instancję :) Jednak twórcy "Operatorów" i "Algorytmy" prawdopodobnie nie są zaznajomieni z OSGi i myślę, że Selektor mógł je zmylić. W każdym razie znalazłem twój komentarz w eleganckiej formie, aby rozwiązać mój problem. Jeśli nikt nie daje mi innego rozwiązania, zaznaczę twoją odpowiedź jako "sprawdzoną" (to jest moje pierwsze pytanie w StackOverflow, nie wiem czy mam, czy mogę sprawdzić więcej niż odpowiedź lub zmienić mój wybór). –
Nie ma potrzeby, aby operatorzy operatora wiedzieli dużo o OSGi, o ile tylko zaimplementują poprawny interfejs. Co do akceptacji odpowiedzi: nie sądzę, że możesz zmienić swój wybór, więc wybieraj mądrze. (Lub zobacz [faq] (http://stackoverflow.com/faq) po więcej wskazówek.) –
Dzięki Angelo (nie Andy!). Twój pomysł jest fajny, ponieważ Selector może także wiązać inne usługi, których "Algorytm" używa do wyodrębniania informacji :) (Nie mogę jeszcze przyjąć twojej odpowiedzi, potrzebuję więcej reputacji). –