OSGi 애플리케이션 찾기

org.apache.aries.blueprint 패키지의 클래스를 사용하여 OSGi 애플리케이션 프로그래밍 모델을 확장할 수 있습니다. 이 써드파티 SPI는 blueprint-1.0 서버 기능을 통해 제공합니다. 확장기능을 적용하려면 OSGi 애플리케이션 번들에 액세스해야 합니다. Liberty에서 OSGi 애플리케이션은 서브시스템으로 실행됩니다. OSGi 애플리케이션을 찾으려면 사용자 기능에서 ServiceTracker를 작성하면 됩니다.

이 태스크 정보

이 주제에서는 실행 중인 OSGi 애플리케이션을 찾을 수 있는 사용자 기능 개발자에 대해 설명합니다. 이 태스크는 종종 OSGi 애플리케이션에 프로그래밍 모델 확장기능을 제공하는 사용자 기능을 위해 필요합니다. 예를 들어, 새 사용자 기능은 흔히 컨테이너라고 하는 새 번들 익스텐더를 구현하거나, 더 간단히 일정한 OSGi 애플리케이션에서 공개된 서비스를 추적하고 호출하여 이러한 확장기능을 제공할 수 있습니다.

이러한 기능은 실행 중인 특정한 OSGi 애플리케이션의 BundleContext를 사용하여 새 BundleTrackerServiceTracker 인스턴스를 작성해야 합니다. 이 BundleContext는 OSGi 애플리케이션과 연관된 org.osgi.service.subsystem.Subsystem에서 얻을 수 있습니다. 다음 프로시저는 SubSystem 서비스를 얻는 방법에 대해 설명합니다.

프로시저

사용자 기능에서 ServiceTracker를 작성하여 OSGi 애플리케이션을 찾으려면 다음 단계를 완료하십시오.

  1. 찾을 Subsystem을 대상으로 하는 org.osgi.framework.Filter를 구성하십시오.
  2. 1단계에서 필터를 사용하는 org.osgi.util.tracker.ServiceTracker를 작성하여 찾을 OSGi 애플리케이션과 연관된 org.osgi.service.subsystem.Subsystem 서비스를 얻으십시오. Subsystem 서비스 인스턴스에는 OSGi 애플리케이션에 대한 작업을 수행하는 데 필요한 모든 사항이 포함되어 있습니다.

다음 예제에서는 사용자 기능에서 ServiceTracker를 사용하여 기호 이름 my.app의 애플리케이션을 찾는 방법을 보여줍니다.
import org.osgi.framework.BundleContext;
import org.osgi.service.subsystem.Subsystem;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
다음 코드 추출에서 ctx 변수는 사용자 기능 번들 중 하나의 BundleContext입니다.
String SERVICE_FILTER = "(&(objectClass=org.osgi.service.subsystem.Subsystem)
                           (subsystem.type=osgi.subsystem.application)(subsystem.symbolicName=my.app))"
    
      org.osgi.framework.Filter filter = ctx.createFilter(SERVICE_FILTER);
마지막 'null' 매개변수는 ServiceTrackerCustomizer<Subsystem, Subsystem>을 구현하는 클래스의 인스턴스로 대체할 수 있습니다.
org.osgi.util.tracker.ServiceTracker<Subsystem, Subsystem> str = new ServiceTracker<Subsystem, Subsystem>(ctx, filter, null);
SERVICE_FILTER는 다음과 같은 상수를 사용하도록 생성할 수 있습니다.
org.osgi.framework.Constants.OBJECTCLASS;
org.osgi.service.subsystem.SubsystemConstants.SUBSYSTEM_SYMBOLICNAME_PROPERTY;
org.osgi.service.subsystem.SubsystemConstants.SUBSYSTEM_TYPE_APPLICATION;
org.osgi.service.subsystem.SubsystemConstants.SUBSYSTEM_TYPE_PROPERTY;

주제의 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_locate_osgi
파일 이름: twlp_locate_osgi.html