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

トピックのタイプを示すアイコン タスク・トピック

ファイル名: twlp_feat_service_tracker.html