Friday, May 23, 2008

OSGi: Services - ServiceTrackerCustomizer, ServiceListener

Hogyan gyűjtenénk be az már működő és a később regisztrált CommandProvider szervizeket? Alapvetően általában három ponton kell dolgoznunk.

Miért van ennyi mindenre szükség? Mivel adott sorrendben indulnak a modulok, ezért fent áll az a lehetőség, hogy ha a saját modulunk előtt vagy után jön létre egy szolgáltatás. Épp ezért, ha egy szerviz bejegyzése :

  • előbb történik, a ServiceListener és ServiceTrackerCustomizer nem fog értesítést kapni az eseményről.

  • utóbb történik, a ServiceTracker nem fog találatot adni.

Ha jól csináljuk, akkor ahogy az alábbi három ábra (forrás: Eclipse Live - Getting Started with OSGi) is mutatja, nem lesz ilyen jellegű problémánk.





Ha szeretnénk ezen kicsit könnyíteni, vagy valamelyest automatizálni, akkor kell csinálnunk egy saját szolgáltatást. Ezt viszont a DS modullal érdemes megoldani, mivel sok olyan lehetőséget nyújt, ami megkönnyíti a dolgunkat. A következő bejegyzés erről fog szólni. (Eredetileg ide akartam irni, de könyebben emészthető, ha külön van.)

No comments: