다른 번들에서 서비스를 호출하기 전에 NPE를 얻을 것이므로이 서비스 가용성을 검색하고 싶습니다.OSGI 서비스 참조
서비스를 검색하는 적절한 방법은 무엇입니까?
ServiceReference serviceReference = bc.getServiceReference(someclass.class.getName());
if (serviceReference == null)
{
throw new RuntimeException("Missing service someclass, please start bundle <name>");
}
else
{
kernelsManager = (someclass) bc.getService(serviceReference);
}
서비스를 찾을 수없는 경우 프레임 워크를 종료하고 싶습니다. 이 일을 올바르게하는 것은 무엇입니까? 위의 예를 어떻게 든 향상시킬 수 있습니까?
질문이 하나 더 있습니다. 서비스를 이용할 수없는 경우 어떻게 번들을 멈출 수 있습니까? –
아직도 좋은 습관이 아니라 선언적 서비스 또는 'ServiceTracker'를 통해 서비스를 추적해야하지만 Bundle.stop을 사용하여 번들을 중지 할 수 있습니다. –
선언적 서비스를 사용하는 경우 외부 서비스에 종속 된 클래스가 사용 가능 해지면 시작되고 서비스가 사라지면 중지됩니다. 청사진은 역동적이지는 않지만오고가는 서비스를 처리 할 수 있습니다. –