在Eclipse中使用多个OSGi包

时间:2015-10-04 05:19:44

标签: java eclipse osgi osgi-bundle

我目前正在学习如何使用OSGi,我有一个小问题,谷歌似乎无法回答这个问题。

我正在尝试为我的移动应用构建后端,后端将连接到多个下游节点。目前,这个后端最初只支持我的移动应用程序,但我打算转移我的门户网站也可以使用它。

看看OSGi如何让我将我的代码模块化为几个包,这就是我的想法:

Backend
|--- osgi-mobile
|--- osgi-webportal
|--- osgi-downstreamnode1
|--- osgi-downstreamnode2

我的问题在于使用/使用前端捆绑中的下游节点捆绑服务(例如 osgi-mobile 使用/消费来自 osgi-downstreamnode1 的服务)。

我目前正在Eclipse Mars中构建它们,并且没有将整个 osgi-downstreamnode1 捆绑包装到JAR中,并将其导入 osgi-mobile 捆绑包,我似乎无法弄清楚如何在Eclipse中引用bundle,以及让 osgi-mobile bundle在运行时调用其他bundle。

3 个答案:

答案 0 :(得分:1)

您需要在开发时考虑服务。 hotzst引用的教程应该有所帮助。打包的基础是为每个eclipse项目创建一个包。如何将它们打包在一起取决于您要部署到的位置。

我猜你现在使用eclipse PDE透视来开发你的应用程序。我不会推荐这个。如果您知道不开发Eclipse RCP应用程序,那么我会考虑使用纯Eclipse + maven或Bndtools。我得到了很多tutorials for developing in plain eclipse and deploy into Apache Karaf。对于bndtools,请参阅their tutorials

无论如何,你应该期待相当多的学习曲线。因此,有些图书可能有助OSGi in practiceApache Karaf Cookbook

答案 1 :(得分:0)

可以在OSGi中使用的服务是通过接口定义的。接口必须独立于实现包: bundleA使用ServiceInterface中定义的bundleBase实现。现在bundleA依赖bundleBase。然后你可以添加bundeB来实现接口,从而也依赖bundleBase

通过OSGi bundleA现在可以请求服务ServiceInterface并获取bundleeB的实例而不存在直接依赖关系。 见http://www.vogella.com/tutorials/OSGiServices/article.html

答案 2 :(得分:-1)

感谢您的帮助!

通过一些反复试验,我通过导出包选项和导入包选项通过 MANIFEST.MF <设法获得了我想要的内容/ strong>即可。我遇到了关于第三方JAR使用的另一组问题,但我会在一个新问题中发布。