S - Type of Service@ProviderType public interface ServiceObjects<S>
For services with prototype scope, multiple
service objects for the service can be obtained. Since implementations of
PrototypeServiceFactory can return the same service object
repeatedly, the framework must use count the returned service objects to
release the service object only when its use count returns to zero.
For services with singleton or
bundle scope, only one, use-counted service
object is available to a requesting bundle.
Any unreleased service objects obtained from this ServiceObjects
object are automatically released by the framework when the bundle associated
with the BundleContext used to create this ServiceObjects object is
stopped.
BundleContext.getServiceObjects(ServiceReference),
PrototypeServiceFactory| Modifier and Type | Method and Description |
|---|---|
S |
getService()
Returns a service object for the
associated service. |
ServiceReference<S> |
getServiceReference()
Returns the
ServiceReference for the service associated with this
ServiceObjects object. |
void |
ungetService(S service)
Releases a service object for the
associated service. |
S getService()
associated service.
This ServiceObjects object can be used to obtain multiple service
objects for the associated service if the service has
prototype scope.
If the associated service has singleton
or bundle scope, this method behaves the
same as calling the BundleContext.getService(ServiceReference)
method for the associated service. That is, only one, use-counted service
object is available from this ServiceObjects object.
This method will always return null when the associated service
has been unregistered.
For a prototype scope service, the following steps are required to obtain a service object:
null is
returned.PrototypeServiceFactory.getService(Bundle, ServiceRegistration)
method is called to supply a customized service object for the caller.
PrototypeServiceFactory
object is null, not an instanceof all the classes named
when the service was registered or the PrototypeServiceFactory
object throws an exception, null is returned and a Framework
event of type FrameworkEvent.ERROR containing a
ServiceException describing the error is fired.null if
the service is not registered, the customized service object
returned by a ServiceFactory does not implement the
classes under which it was registered or the
ServiceFactory threw an exception.java.lang.IllegalStateException - If the BundleContext used to create this
ServiceObjects object is no longer valid.ungetService(Object)void ungetService(S service)
associated service.
This ServiceObjects object can be used to obtain multiple service
objects for the associated service if the service has
prototype scope. If the associated
service has singleton or
bundle scope, this method behaves the same
as calling the BundleContext.ungetService(ServiceReference)
method for the associated service. That is, only one, use-counted service
object is available from this ServiceObjects object.
For a prototype scope service, the following steps are required to release a service object:
PrototypeServiceFactory.ungetService(Bundle, ServiceRegistration, Object)
method is called to release the specified service object.The specified service object must no longer be used and all references to it should be destroyed after calling this method when the use count has returned to zero.
service - A service object previously provided by this
ServiceObjects object.java.lang.IllegalStateException - If the BundleContext used to create this
ServiceObjects object is no longer valid.java.lang.IllegalArgumentException - If the specified service object is
null or was not provided by a ServiceObjects
object for the associated service.getService()ServiceReference<S> getServiceReference()
ServiceReference for the service associated with this
ServiceObjects object.ServiceReference for the service associated with this
ServiceObjects object.Copyright © OSGi Alliance (2000, 2018). All Rights Reserved. Licensed under the OSGi Specification License, Version 2.0