Sunday 15 April 2012

cq5 - Filtering OSGi services using SlingScriptHelper#getService() method -



cq5 - Filtering OSGi services using SlingScriptHelper#getService() method -

i want instantiate service object in jsp using sling taglib. in normal scenario service class beingness implemented 1 class, pretty simple:-

registrationservice registrationservice = sling.getservice(registrationservice.class);

but if service class has more 1 implementation classes, how can create sure instantiate object particular class.

my java class like:- 1. interface: registrationservice 2. implementation class 1:-

@properties({@property(name = "datasource", value = "sbws"}) @service public class registrationserviceimpl implements registrationservice{ }

3. implementation class 2:-

@properties({@property(name = "datasource", value = "solr"}) @service public class registrationserviceimpl implements registrationservice{ }

how can create sure using

registrationservice registrationservice = sling.getservice(registrationservice.class);

in jsp instantiate service allow implementation class 1

use slingscripthelper#getservices(...) method, allows specify filter:

registrationservice[] services = sling.getservice(registrationservice.class, "(datasource=sbws)"); if (services.length > 0) { // services[0] contains service }

getting osgi service , filtering via properties quite low-level stuff, consider moving jsp java class.

osgi cq5 osgi-bundle sling

No comments:

Post a Comment