在 Eclipse 中使用多个 OSGi 包
Working with multiple OSGi bundles in Eclipse
我目前正在学习如何使用 OSGi,我有一个小问题似乎无法Google回答。
我正在尝试为我的移动应用构建后端,后端将连接到多个下游节点。目前,此后端最初仅支持我的移动应用程序,但我计划将我的门户网站也转移到使用它。
看看 OSGi 如何让我将我的代码模块化成几个包,这就是我的想法:
Backend
|--- osgi-mobile
|--- osgi-webportal
|--- osgi-downstreamnode1
|--- osgi-downstreamnode2
我的问题在于 using/consuming 来自前端包中下游节点包的服务(例如 osgi-mobile using/consuming 来自 osgi-downstreamnode1).
我目前正在 Eclipse Mars 中构建它们,并且没有将整个 osgi-downstreamnode1 包打包到一个 JAR 中,并将其导入到 osgi -mobile 包,我似乎无法弄清楚如何在 Eclipse 中引用包,以及如何让 osgi-mobile 包在运行时调用其他包.
可在 OSGi 中使用的服务是通过接口定义的。该接口必须独立于实现包:
bundleA
使用在 bundleBase
中定义的 ServiceInterface
的实现。现在 bundleA
依赖于 bundleBase
。然后你可以添加 bundeB
它实现了接口,因此也依赖于 bundleBase
.
通过 OSGi bundleA
现在可以请求服务 ServiceInterface
并获取 bundleeB
的实例,而无需直接依赖。
参见 http://www.vogella.com/tutorials/OSGiServices/article.html
您需要在开发时就考虑服务。 hotzst 引用的教程应该有所帮助。打包的基础是为每个 eclipse 项目创建一个包。然后如何将它们打包在一起取决于您要部署到的位置。
我猜您目前正在使用 eclipse PDE 透视图来开发您的应用程序。我不会推荐这个。如果您知道自己不开发 Eclipse RCP 应用程序,那么我会考虑普通 Eclipse + maven 或 Bndtools。我得到了很多 tutorials for developing in plain eclipse and deploy into Apache Karaf. For bndtools see their tutorials.
无论如何,您应该会经历一段相当长的学习曲线。所以有些书可能会有所帮助,例如 OSGi in practice or Apache Karaf Cookbook.
感谢您的帮助!
通过反复试验,我设法通过 Export-Package 选项和 Import-Package 选项得到了我想要的东西通过 MANIFEST.MF。我 运行 遇到了另一组关于使用第三方 JAR 的问题,但我会 post 在一个新问题中解决这个问题。
我目前正在学习如何使用 OSGi,我有一个小问题似乎无法Google回答。
我正在尝试为我的移动应用构建后端,后端将连接到多个下游节点。目前,此后端最初仅支持我的移动应用程序,但我计划将我的门户网站也转移到使用它。
看看 OSGi 如何让我将我的代码模块化成几个包,这就是我的想法:
Backend
|--- osgi-mobile
|--- osgi-webportal
|--- osgi-downstreamnode1
|--- osgi-downstreamnode2
我的问题在于 using/consuming 来自前端包中下游节点包的服务(例如 osgi-mobile using/consuming 来自 osgi-downstreamnode1).
我目前正在 Eclipse Mars 中构建它们,并且没有将整个 osgi-downstreamnode1 包打包到一个 JAR 中,并将其导入到 osgi -mobile 包,我似乎无法弄清楚如何在 Eclipse 中引用包,以及如何让 osgi-mobile 包在运行时调用其他包.
可在 OSGi 中使用的服务是通过接口定义的。该接口必须独立于实现包:
bundleA
使用在 bundleBase
中定义的 ServiceInterface
的实现。现在 bundleA
依赖于 bundleBase
。然后你可以添加 bundeB
它实现了接口,因此也依赖于 bundleBase
.
通过 OSGi bundleA
现在可以请求服务 ServiceInterface
并获取 bundleeB
的实例,而无需直接依赖。
参见 http://www.vogella.com/tutorials/OSGiServices/article.html
您需要在开发时就考虑服务。 hotzst 引用的教程应该有所帮助。打包的基础是为每个 eclipse 项目创建一个包。然后如何将它们打包在一起取决于您要部署到的位置。
我猜您目前正在使用 eclipse PDE 透视图来开发您的应用程序。我不会推荐这个。如果您知道自己不开发 Eclipse RCP 应用程序,那么我会考虑普通 Eclipse + maven 或 Bndtools。我得到了很多 tutorials for developing in plain eclipse and deploy into Apache Karaf. For bndtools see their tutorials.
无论如何,您应该会经历一段相当长的学习曲线。所以有些书可能会有所帮助,例如 OSGi in practice or Apache Karaf Cookbook.
感谢您的帮助!
通过反复试验,我设法通过 Export-Package 选项和 Import-Package 选项得到了我想要的东西通过 MANIFEST.MF。我 运行 遇到了另一组关于使用第三方 JAR 的问题,但我会 post 在一个新问题中解决这个问题。