Utilización de servicios OSGi

Puede registrar y anular el registro de los servicios de forma asíncrona en cualquier momento. Por lo tanto, llame un servicio para un periodo de tiempo lo más corto posible. Puede utilizar la clase ServiceTracker para realizar un seguimiento de la disponibilidad de los servicios simultáneamente.

Acerca de esta tarea

Si desea realizar un seguimiento de los servicios, puede crear un objeto ServiceTracker mediante el contexto del paquete, la interfaz deseada y las propiedades que desee correlacionar. A continuación, abra el rastreador. Puede consultar al rastreador cuál es la mejor coincidencia o todas las coincidencias. Asegúrese de no ocupar el servicio después de utilizarlo. No es necesario indicar al rastreador que ha terminado; el rastreador almacena internamente en la memoria caché los servicios coincidentes y los borra cuando se anula su registro. Cuando haya terminado de utilizar el rastreador, utilice el método serviceTracker.close() para cerrarlo.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar un objeto ServiceTracker para realizar un seguimiento de un servicio:

package com.ibm.foo.tracker;

import com.ibm.foo.simple.Foo;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;

/**
 * Simplest use of a ServiceTracker to get a service
 */
public class TrackingFooUser
{

    private ServiceTracker<Foo,Foo> serviceTracker;

    public TrackingFooUser( BundleContext bundleContext )
    {
        serviceTracker = new ServiceTracker<Foo, Foo>( bundleContext, Foo.class, null );
        serviceTracker.open();
    }

    public void doFoo() {
        Foo foo = serviceTracker.getService();
        //use foo
        //no need to return it... just don't use it for long.
    }

    public void shutdown() {
        serviceTracker.close();
    }
}

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_feat_service_tracker.html