2015-10-04 149 views
0

我目前正在学习如何使用OSGi,并且我有一个小问题,我似乎无法向Google提供答案。在Eclipse中使用多个OSGi包

我想为我的移动应用程序构建一个后端,并且后端将连接到多个下游节点。目前,这个后端最初只支持我的移动应用程序,但我计划转移我的门户网站以使用它。

看着OSGi的是如何让我有模块化我的代码到几束,这是我的想法:

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

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

我目前正在建设他们在Eclipse火星和短包装整个OSGi的downstreamnode1捆绑到一个JAR中,并将其导入的OSGi的移动包,我似乎无法弄清楚如何在Eclipse中引用包,以及如何在运行时调用其他包。

+0

我不明白你面对的问题。是关于提供和使用服务还是关于包装/部署? –

+0

@ChristianSchneider我猜这是两个都有点?提供和使用服务将在运行时发生,而打包和部署将在编译期间发生? – Earthling

回答

-1

感谢您的帮助!

通过一些试验和错误,我设法让我通过出口型包装选项和进口包装通过MANIFEST.MF选择想要的东西。我遇到了另一组使用第三方JAR的问题,但我会在一个新问题中发布这个问题。

0

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

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

0

您需要在开发时考虑服务。 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