S
- Type of Service.@ProviderType public interface ServiceRegistration<S>
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.
BundleContext.registerService(String[],Object,Dictionary)
Modifier and Type | Method and Description |
---|---|
ServiceReference<S> |
getReference()
Returns a
ServiceReference object for a service being registered. |
void |
setProperties(java.util.Dictionary<java.lang.String,?> properties)
Updates the properties associated with a service.
|
void |
unregister()
Unregisters a service.
|
ServiceReference<S> getReference()
ServiceReference
object for a service being registered.
The ServiceReference
object may be shared with other bundles.
ServiceReference
object.java.lang.IllegalStateException
- If this ServiceRegistration
object
has already been unregistered.void setProperties(java.util.Dictionary<java.lang.String,?> properties)
The Constants.OBJECTCLASS
, Constants.SERVICE_BUNDLEID
,
Constants.SERVICE_ID
and Constants.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:
ServiceEvent.MODIFIED
is fired.properties
- The properties for this service. See Constants
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.java.lang.IllegalStateException
- If this ServiceRegistration
object
has already been unregistered.java.lang.IllegalArgumentException
- If properties
contains case
variants of the same key name.void unregister()
ServiceRegistration
object from
the Framework service registry. All ServiceReference
objects
associated with this ServiceRegistration
object can no longer be
used to interact with the service once unregistration is complete.
The following steps are required to unregister a service:
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, the
ServiceReference
objects for the service may no longer be used to
get a service object for the service.ServiceFactory
object,
the ServiceFactory.ungetService
method is called to release the
service object for the bundle.java.lang.IllegalStateException
- If this ServiceRegistration
object
has already been unregistered.BundleContext.ungetService(ServiceReference)
,
ServiceFactory.ungetService(Bundle, ServiceRegistration, Object)
Copyright © OSGi Alliance (2000, 2018). All Rights Reserved. Licensed under the OSGi Specification License, Version 2.0