Have you tried using a ServiceTracker with a filter?
private <T> T getService(Class<T> type, String key, String value)
{
String filterString = "(&(objectclass="+type.getName()+")
("+key+"="+value+"))";
logger.info("Looking up services: " + filterString);
Filter filter = bundleContext.createFilter(filterString);
ServiceTracker tracker = new ServiceTracker(context, filter, null);
tracker.open();
T service = type.cast(tracker.getService());
tracker.close();
return service;
}
You can filter on any properties that the service is created with.
Larry
>
> I'm familiar with:
>
> @Reference(referenceInterface = MySweetInterface.class, target =
> "(specialProp=certainThingIWant)")
>
> but am wondering if I can do something like that during the activation a
> component.
>
> My scenario is this. I have a component that uses factory
> configurations
> (ldap connection pools) and a component that needs one of the components
> created by the factory configuration (ldap authn). In this second
> component, since it needs the /right/ ldap pool to use if there are
> multiple
> available, I was thinking of passing a property in the configuration
> that
> could be used to lookup a service like the "target" bit above. Is this
> doable or should I approach the problem differently?
>
> No virus found in this incoming message.
> Checked by AVG - www.avg.com
> Version: 9.0.819 / Virus Database: 271.1.1/2883 - Release Date: 05/20/10
> 02:26:00
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]