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