In my project, there is an OSGi bundle which exposes an interface com.xyx.EventProvider as a declerative service.

There is another 3rd party bundle org.eclipse.equinox.http.jetty, to which I have attached a fragment bundle com.xyz.jetty.customizer.

This fragment bundle needs to access the service exposed via the interface com.xyx.EventProvider.

The problem is that fragment bundles don't have Activators, so it does not have reference to the BundleContext and therefore it cannot access any service.

Is there a way in OSGi to achieve this?

有帮助吗?

解决方案

I always hate to suggest using FrameworkUtil.getBundle().getBundleContext() because it's such a hack, but in this case it seems to be the only solution.

You will need to pass in a class that is defined by the host bundle, because fragments cannot have a BundleContext (i.e. the getBundleContext call would return null).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top