Equinox service分析
osgi中bundle间的协作,一般来说有两种方式:
- class层面的应用
比如package的import,export,或者bundle间的直接引用
- instance层面的应用
这个就是service应用
equinox service和spring 里我们常说的service区别
主要区别就是equinox service是需要管理使用它的bundle,和提供service自身bundle的状态的,因为osgi是一个动态的平台
equinox service使用
一般有两个方法:
- 直接使用
ServiceReference reference = context.getServiceReference(***.class.getName());
Object service = (***) context.getService(reference);
- 使用 ServiceTrack
ServiceTracker serviceTracker = new ServiceTracker(context, ***.class.getName(), null);
serviceTracker .open();
Object service = serviceTracker.getService();