我是osgi的新手,并且很少有经验。我有一个osgi包,它在config xml文件中使用osgi服务导出bean。我想在另一个osgi包中使用该服务。谁能告诉我怎么做?我正在使用maven和felix osgi。
答案 0 :(得分:1)
您想使用蓝图服务吗?你的描述“config xml”听起来有点像它可能是蓝图。在这种情况下,您可以使用
我的网站上有一个完整的例子: http://www.liquid-reality.de/x/DIBZ
该示例显示了如何使用蓝图导出和导入服务。
答案 1 :(得分:1)
使用蓝图或其他方式导出OSGi服务无关紧要 - 因为它是OSGi服务,您的捆绑包可以从OSGi服务注册表获取它。 为此你必须:
在捆绑包清单中导入其包,以声明依赖关系。 你必须添加 Import-Package:com.acme.theservicepackage 在META-INF / Manifest.mf
timeRef = bc.getServiceReference(TimeService.class.getName()); if(timeRef!= null){ timeService =(TimeService)bc.getService(timeRef); }
醇>然后,您只需调用其方法即可使用timeService(或您的服务正在使用的任何接口),无论它们是什么。
这里有很多细节,你可以使用帮助器ServiceTracker类,或蓝图,或声明性服务......但是因为你似乎是OSGi的新手,所以我让它尽可能简单并且显示最多基本的方法。
基本OSGi服务有演示here。