Monday, May 26, 2008

Declarative Services

Az előző bejegyzésben írtam, hogy vannak olyan szituációk, ahol jól ki lehet használni a DS "szolgáltatásait".
Ami a különlegességet adja egy ilyen szerviznek az az, hogy a konfigurációs fájlban (OSGI-INF/componentname.xml) meg lehet adni függőségeket (reference) a szervizünknek. Ezzel kiváltatjuk (ami természetesen, így erős túlzás, de attól még igaz) a ServiceListener + Tracker + Customizer játékot.
Gyors példa egy épp aktuális projektből:

Lényeges részek (jelen esetben):
  • interface: amitől "függ" a szolgáltatásunk
  • cardinality: min.-max. előfordulás (0..n, 1..1, 0..1, 1..n)
  • bind/unbind: azon metódusok, amik a számunkra "szükséges" szolgáltatásokat kezelik.
  • activate/deactivate: ezen két metódusnak egy ComponentContext szerepel0, ha implementálva vannak a szervizünkben.
Egy ilyen szerviznél, a keretrendszer kezeli azon részeket, amit eddig a ServiceListener, -Tracker, -TrackerCustomizer hármassal tudtunk megoldani.

No comments: