第一个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
请注意,这几个包是除过书本中明确的包添加之外还需要另外添加的包,否则例子就无法运行起来。