When registering a service, a ServiceFactory
object can be used instead of a service object, so that the bundle developer can gain control of the specific service object granted to a bundle that is using the service.
When this happens, the BundleContext.getService(ServiceReference)
method calls the ServiceFactory.getService
method to create a service object specifically for the requesting bundle. The service object returned by the ServiceFactory
object is cached by the Framework until the bundle releases its use of the service.
When the bundle's use count for the service equals zero (including the bundle stopping or the service being unregistered), the ServiceFactory.ungetService
method is called.
ServiceFactory
objects are only used by the Framework and are not made available to other bundles in the OSGi environment.
Definition at line 52 of file ServiceFactory.java.
Public Member Functions | |
Object | getService (Bundle bundle, ServiceRegistration registration) |
Creates a new service object. | |
void | ungetService (Bundle bundle, ServiceRegistration registration, Object service) |
Releases a service object. |
Object org.osgi.framework.ServiceFactory.getService | ( | Bundle | bundle, | |
ServiceRegistration | registration | |||
) |
Creates a new service object.
The Framework invokes this method the first time the specified bundle
requests a service object using the BundleContext.getService(ServiceReference)
method. The service factory can then return a specific service object for each bundle.
The Framework caches the value returned (unless it is null
), and will return the same service object on any future call to BundleContext.getService
from the same bundle.
The Framework will check if the returned service object is an instance of all the classes named when the service was registered. If not, then null
is returned to the bundle.
bundle | The bundle using the service. | |
registration | The ServiceRegistration object for the service. |
void org.osgi.framework.ServiceFactory.ungetService | ( | Bundle | bundle, | |
ServiceRegistration | registration, | |||
Object | service | |||
) |
Releases a service object.
The Framework invokes this method when a service has been released by a bundle. The service object may then be destroyed.
bundle | The bundle releasing the service. | |
registration | The ServiceRegistration object for the service. | |
service | The service object returned by a previous call to the ServiceFactory.getService method. |