如何将导出的bean从osgi包导入/使用到另一个osgi包中

时间:2012-06-25 15:08:07

标签: maven osgi

我是osgi的新手,并且很少有经验。我有一个osgi包,它在config xml文件中使用osgi服务导出bean。我想在另一个osgi包中使用该服务。谁能告诉我怎么做?我正在使用maven和felix osgi。

2 个答案:

答案 0 :(得分:1)

您想使用蓝图服务吗?你的描述“config xml”听起来有点像它可能是蓝图。在这种情况下,您可以使用

我的网站上有一个完整的例子: http://www.liquid-reality.de/x/DIBZ

该示例显示了如何使用蓝图导出和导入服务。

答案 1 :(得分:1)

使用蓝图或其他方式导出OSGi服务无关紧要 - 因为它是OSGi服务,您的捆绑包可以从OSGi服务注册表获取它。 为此你必须:

  1. 在捆绑包清单中导入其包,以声明依赖关系。 你必须添加 Import-Package:com.acme.theservicepackage 在META-INF / Manifest.mf

  2. 在您的Activator类中,您必须使用捆绑上下文从服务注册表获取服务:

    timeRef = bc.getServiceReference(TimeService.class.getName());     if(timeRef!= null){     timeService =(TimeService)bc.getService(timeRef);   }

    然后,您只需调用其方法即可使用timeService(或您的服务正在使用的任何接口),无论它们是什么。

    这里有很多细节,你可以使用帮助器ServiceTracker类,或蓝图,或声明性服务......但是因为你似乎是OSGi的新手,所以我让它尽可能简单并且显示最多基本的方法。

    基本OSGi服务有演示here