|
OSGi™ Service Platform Release 4 Version 4.2 |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.osgi.util.tracker.ServiceTracker
public class ServiceTracker
The ServiceTracker class simplifies using services from the
Framework's service registry.
A ServiceTracker object is constructed with search criteria and
a ServiceTrackerCustomizer object. A ServiceTracker
can use a ServiceTrackerCustomizer to customize the service
objects to be tracked. The ServiceTracker can then be opened to
begin tracking all services in the Framework's service registry that match
the specified search criteria. The ServiceTracker correctly
handles all of the details of listening to ServiceEvents and
getting and ungetting services.
The getServiceReferences method can be called to get references
to the services being tracked. The getService and
getServices methods can be called to get the service objects for
the tracked service.
The ServiceTracker class is thread-safe. It does not call a
ServiceTrackerCustomizer while holding any locks.
ServiceTrackerCustomizer implementations must also be
thread-safe.
| Field Summary | |
|---|---|
protected BundleContext |
context
The Bundle Context used by this ServiceTracker. |
protected Filter |
filter
The Filter used by this ServiceTracker which specifies the
search criteria for the services to track. |
| Constructor Summary | |
|---|---|
ServiceTracker(BundleContext context,
Filter filter,
ServiceTrackerCustomizer customizer)
Create a ServiceTracker on the specified Filter
object. |
|
ServiceTracker(BundleContext context,
ServiceReference reference,
ServiceTrackerCustomizer customizer)
Create a ServiceTracker on the specified
ServiceReference. |
|
ServiceTracker(BundleContext context,
java.lang.String clazz,
ServiceTrackerCustomizer customizer)
Create a ServiceTracker on the specified class name. |
|
| Method Summary | |
|---|---|
java.lang.Object |
addingService(ServiceReference reference)
Default implementation of the ServiceTrackerCustomizer.addingService method. |
void |
close()
Close this ServiceTracker. |
java.lang.Object |
getService()
Returns a service object for one of the services being tracked by this ServiceTracker. |
java.lang.Object |
getService(ServiceReference reference)
Returns the service object for the specified ServiceReference if the specified referenced service is
being tracked by this ServiceTracker. |
ServiceReference |
getServiceReference()
Returns a ServiceReference for one of the services being
tracked by this ServiceTracker. |
ServiceReference[] |
getServiceReferences()
Return an array of ServiceReferences for all services being
tracked by this ServiceTracker. |
java.lang.Object[] |
getServices()
Return an array of service objects for all services being tracked by this ServiceTracker. |
int |
getTrackingCount()
Returns the tracking count for this ServiceTracker. |
void |
modifiedService(ServiceReference reference,
java.lang.Object service)
Default implementation of the ServiceTrackerCustomizer.modifiedService method. |
void |
open()
Open this ServiceTracker and begin tracking services. |
void |
open(boolean trackAllServices)
Open this ServiceTracker and begin tracking services. |
void |
remove(ServiceReference reference)
Remove a service from this ServiceTracker. |
void |
removedService(ServiceReference reference,
java.lang.Object service)
Default implementation of the ServiceTrackerCustomizer.removedService method. |
int |
size()
Return the number of services being tracked by this ServiceTracker. |
java.lang.Object |
waitForService(long timeout)
Wait for at least one service to be tracked by this ServiceTracker. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected final BundleContext context
ServiceTracker.
protected final Filter filter
ServiceTracker which specifies the
search criteria for the services to track.
| Constructor Detail |
|---|
public ServiceTracker(BundleContext context,
ServiceReference reference,
ServiceTrackerCustomizer customizer)
ServiceTracker on the specified
ServiceReference.
The service referenced by the specified ServiceReference
will be tracked by this ServiceTracker.
context - The BundleContext against which the tracking
is done.reference - The ServiceReference for the service to be
tracked.customizer - The customizer object to call when services are added,
modified, or removed in this ServiceTracker. If
customizer is null, then this
ServiceTracker will be used as the
ServiceTrackerCustomizer and this
ServiceTracker will call the
ServiceTrackerCustomizer methods on itself.
public ServiceTracker(BundleContext context,
java.lang.String clazz,
ServiceTrackerCustomizer customizer)
ServiceTracker on the specified class name.
Services registered under the specified class name will be tracked by
this ServiceTracker.
context - The BundleContext against which the tracking
is done.clazz - The class name of the services to be tracked.customizer - The customizer object to call when services are added,
modified, or removed in this ServiceTracker. If
customizer is null, then this
ServiceTracker will be used as the
ServiceTrackerCustomizer and this
ServiceTracker will call the
ServiceTrackerCustomizer methods on itself.
public ServiceTracker(BundleContext context,
Filter filter,
ServiceTrackerCustomizer customizer)
ServiceTracker on the specified Filter
object.
Services which match the specified Filter object will be
tracked by this ServiceTracker.
context - The BundleContext against which the tracking
is done.filter - The Filter to select the services to be
tracked.customizer - The customizer object to call when services are added,
modified, or removed in this ServiceTracker. If
customizer is null, then this ServiceTracker will be
used as the ServiceTrackerCustomizer and this
ServiceTracker will call the
ServiceTrackerCustomizer methods on itself.| Method Detail |
|---|
public void open()
ServiceTracker and begin tracking services.
This implementation calls open(false).
java.lang.IllegalStateException - If the BundleContext
with which this ServiceTracker was created is no
longer valid.open(boolean)public void open(boolean trackAllServices)
ServiceTracker and begin tracking services.
Services which match the search criteria specified when this
ServiceTracker was created are now tracked by this
ServiceTracker.
trackAllServices - If true, then this
ServiceTracker will track all matching services
regardless of class loader accessibility. If false,
then this ServiceTracker will only track matching
services which are class loader accessible to the bundle whose
BundleContext is used by this
ServiceTracker.
java.lang.IllegalStateException - If the BundleContext
with which this ServiceTracker was created is no
longer valid.public void close()
ServiceTracker.
This method should be called when this ServiceTracker should
end the tracking of services.
This implementation calls getServiceReferences() to get the list
of tracked services to remove.
public java.lang.Object addingService(ServiceReference reference)
ServiceTrackerCustomizer.addingService method.
This method is only called when this ServiceTracker has been
constructed with a null ServiceTrackerCustomizer argument.
This implementation returns the result of calling getService
on the BundleContext with which this
ServiceTracker was created passing the specified
ServiceReference.
This method can be overridden in a subclass to customize the service
object to be tracked for the service being added. In that case, take care
not to rely on the default implementation of
removedService to unget
the service.
addingService in interface ServiceTrackerCustomizerreference - The reference to the service being added to this
ServiceTracker.
ServiceTracker.ServiceTrackerCustomizer.addingService(ServiceReference)
public void modifiedService(ServiceReference reference,
java.lang.Object service)
ServiceTrackerCustomizer.modifiedService method.
This method is only called when this ServiceTracker has been
constructed with a null ServiceTrackerCustomizer argument.
This implementation does nothing.
modifiedService in interface ServiceTrackerCustomizerreference - The reference to modified service.service - The service object for the modified service.ServiceTrackerCustomizer.modifiedService(ServiceReference, Object)
public void removedService(ServiceReference reference,
java.lang.Object service)
ServiceTrackerCustomizer.removedService method.
This method is only called when this ServiceTracker has been
constructed with a null ServiceTrackerCustomizer argument.
This implementation calls ungetService, on the
BundleContext with which this ServiceTracker
was created, passing the specified ServiceReference.
This method can be overridden in a subclass. If the default
implementation of addingService
method was used, this method must unget the service.
removedService in interface ServiceTrackerCustomizerreference - The reference to removed service.service - The service object for the removed service.ServiceTrackerCustomizer.removedService(ServiceReference, Object)
public java.lang.Object waitForService(long timeout)
throws java.lang.InterruptedException
ServiceTracker. This method will also return when this
ServiceTracker is closed.
It is strongly recommended that waitForService is not used
during the calling of the BundleActivator methods.
BundleActivator methods are expected to complete in a short
period of time.
This implementation calls getService() to determine if a service
is being tracked.
timeout - The time interval in milliseconds to wait. If zero, the
method will wait indefinitely.
getService().
java.lang.InterruptedException - If another thread has interrupted the
current thread.
java.lang.IllegalArgumentException - If the value of timeout is negative.public ServiceReference[] getServiceReferences()
ServiceReferences for all services being
tracked by this ServiceTracker.
ServiceReferences or null if
no services are being tracked.public ServiceReference getServiceReference()
ServiceReference for one of the services being
tracked by this ServiceTracker.
If multiple services are being tracked, the service with the highest
ranking (as specified in its service.ranking property) is
returned. If there is a tie in ranking, the service with the lowest
service ID (as specified in its service.id property); that
is, the service that was registered first is returned. This is the same
algorithm used by BundleContext.getServiceReference.
This implementation calls getServiceReferences() to get the list
of references for the tracked services.
ServiceReference or null if no
services are being tracked.public java.lang.Object getService(ServiceReference reference)
ServiceReference if the specified referenced service is
being tracked by this ServiceTracker.
reference - The reference to the desired service.
null if the service referenced
by the specified ServiceReference is not being
tracked.public java.lang.Object[] getServices()
ServiceTracker.
This implementation calls getServiceReferences() to get the list
of references for the tracked services and then calls
getService(ServiceReference) for each reference to get the
tracked service object.
null if no services
are being tracked.public java.lang.Object getService()
ServiceTracker.
If any services are being tracked, this implementation returns the result
of calling getService(getServiceReference()).
null if no services are being
tracked.public void remove(ServiceReference reference)
ServiceTracker.
The specified service will be removed from this
ServiceTracker. If the specified service was being tracked
then the ServiceTrackerCustomizer.removedService method will
be called for that service.
reference - The reference to the service to be removed.public int size()
ServiceTracker.
public int getTrackingCount()
ServiceTracker.
The tracking count is initialized to 0 when this
ServiceTracker is opened. Every time a service is added,
modified or removed from this ServiceTracker, the tracking
count is incremented.
The tracking count can be used to determine if this
ServiceTracker has added, modified or removed a service by
comparing a tracking count value previously collected with the current
tracking count value. If the value has not changed, then no service has
been added, modified or removed from this ServiceTracker
since the previous tracking count was collected.
ServiceTracker or -1 if
this ServiceTracker is not open.
|
OSGi™ Service Platform Release 4 Version 4.2 |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||