Interface ServiceRegistration<S>
- Type Parameters:
S
- Type of Service.
The Framework returns a ServiceRegistration
object when a
BundleContext.registerService
method invocation is successful. The
ServiceRegistration
object is for the private use of the registering
bundle and should not be shared with other bundles.
The ServiceRegistration
object may be used to update the properties
of the service or to unregister the service.
-
Method Summary
Modifier and TypeMethodDescriptionReturns aServiceReference
object for a service being registered.void
setProperties
(Dictionary<String, ?> properties) Updates the properties associated with a service.void
Unregisters a service.
-
Method Details
-
getReference
ServiceReference<S> getReference()Returns aServiceReference
object for a service being registered.The
ServiceReference
object may be shared with other bundles.- Returns:
ServiceReference
object.- Throws:
IllegalStateException
- If thisServiceRegistration
object has already been unregistered.
-
setProperties
Updates the properties associated with a service.The
Constants.OBJECTCLASS
,Constants.SERVICE_BUNDLEID
,Constants.SERVICE_ID
andConstants.SERVICE_SCOPE
keys cannot be modified by this method. These values are set by the Framework when the service is registered in the OSGi environment.The following steps are required to modify service properties:
- The service's properties are replaced with the provided properties.
- A service event of type
ServiceEvent.MODIFIED
is fired.
- Parameters:
properties
- The properties for this service. SeeConstants
for a list of standard service property keys. Changes should not be made to this object after calling this method. To update the service's properties this method should be called again.- Throws:
IllegalStateException
- If thisServiceRegistration
object has already been unregistered.IllegalArgumentException
- Ifproperties
contains case variants of the same key name.
-
unregister
void unregister()Unregisters a service. Remove aServiceRegistration
object from the Framework service registry. AllServiceReference
objects associated with thisServiceRegistration
object can no longer be used to interact with the service once unregistration is complete.The following steps are required to unregister a service:
- The service is removed from the Framework service registry so that it can no longer be obtained.
- A service event of type
ServiceEvent.UNREGISTERING
is fired so that bundles using this service can release their use of the service. Once delivery of the service event is complete, theServiceReference
objects for the service may no longer be used to get a service object for the service. - For each bundle whose use count for this service is greater than
zero:
- The bundle's use count for this service is set to zero.
- If the service was registered with a
ServiceFactory
object, theServiceFactory.ungetService
method is called to release the service object for the bundle.
- Throws:
IllegalStateException
- If thisServiceRegistration
object has already been unregistered.- See Also:
-