使用 OSGi 服务

服务可随时异步地注册和注销。因此,调用服务的时间应该尽可能短。可以使用 ServiceTracker 类来并发地跟踪服务可用性。

关于此任务

如果您想要跟踪服务,那么可以通过使用捆绑软件上下文、所需接口以及要匹配的属性来创建 ServiceTracker 对象,然后打开跟踪程序。可以查询跟踪程序以获取最佳匹配项或所有匹配项。请确保您在使用服务之后不会占用该服务。不必告诉跟踪程序您已完成;跟踪程序会在内部高速缓存匹配的服务,并在服务注销后将其清除。当您已经完成了使用跟踪程序时,请使用 serviceTracker.close() 方法来关闭跟踪程序。

示例

以下示例说明如何使用 ServiceTracker 对象来跟踪服务:

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();
    }
}

用于指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_feat_service_tracker
文件名:twlp_feat_service_tracker.html