第一個OSGi例子基本上都是java pojo來實現,第二個例子開始使用服務,使用服務主要的關鍵點在於服務的提供者入口和服務的使用者入口,服務提供者需要將接口暴露出來,而實際的實現類則不在導出的包中體現。
註冊服務在Activator的start方法中使用context.registerService來註冊;
服務獲取使用一箇中間層來實現,context.getServiceReference,並通過這個服務引用調用getService來獲取實際的服務對象。
這個例子裏面在run configuration中需要新增如下的bundle才能運行成功:
javax.annotation
javax.inject
org.eclipse.core.contenttype
org.eclipse.core.runtime
org.eclipse.core.runtime.compatibility
org.eclipse.equinox.app
org.eclipse.equinox.registry
org.eclipse.update.configurator
請注意,這幾個包是除過書本中明確的包添加之外還需要另外添加的包,否則例子就無法運行起來。