Java 在Eclipse中使用多个OSGi捆绑包
我目前正在学习如何使用OSGi,我有一个小问题,我似乎无法在谷歌上找到答案 我正在尝试为我的移动应用程序构建一个后端,该后端将连接到几个下游节点。目前,这个后端最初只支持我的移动应用程序,但我计划将我的web门户也改为使用它 看看OSGi如何让我将代码模块化为几个包,我的想法是:Java 在Eclipse中使用多个OSGi捆绑包,java,eclipse,osgi,osgi-bundle,Java,Eclipse,Osgi,Osgi Bundle,我目前正在学习如何使用OSGi,我有一个小问题,我似乎无法在谷歌上找到答案 我正在尝试为我的移动应用程序构建一个后端,该后端将连接到几个下游节点。目前,这个后端最初只支持我的移动应用程序,但我计划将我的web门户也改为使用它 看看OSGi如何让我将代码模块化为几个包,我的想法是: Backend |--- osgi-mobile |--- osgi-webportal |--- osgi-downstreamnode1 |--- osgi-downstreamnode2 我的问题在于使用/消费
Backend
|--- osgi-mobile
|--- osgi-webportal
|--- osgi-downstreamnode1
|--- osgi-downstreamnode2
我的问题在于使用/消费前端捆绑包中下游节点捆绑包中的服务(例如,osgi mobile使用/消费来自osgi-downstreamnode1的服务)
我目前正在Eclipse Mars中构建它们,除了将整个osgi-downstreamnode1捆绑包打包到一个JAR中,并将其导入osgi mobile捆绑包之外,我似乎不知道如何在Eclipse中引用这些捆绑包,以及让osgi mobile捆绑包在运行时调用其他捆绑包。可以在osgi中使用的服务是通过接口定义的。接口必须独立于实现包:
bundleA
使用ServiceInterface
的实现,该实现在bundleBase
中定义。现在bundleA
依赖于bundleBase
。然后,您可以添加实现该接口的bundeB
,从而也依赖于bundleBase
通过OSGiBundleEA
现在可以请求服务ServiceInterface
并获得bundleeB
的实例,而不存在直接依赖关系。
请参阅可以在OSGi中使用的服务是通过接口定义的。接口必须独立于实现包:
bundleA
使用ServiceInterface
的实现,该实现在bundleBase
中定义。现在bundleA
依赖于bundleBase
。然后,您可以添加实现该接口的bundeB
,从而也依赖于bundleBase
通过OSGiBundleEA
现在可以请求服务ServiceInterface
并获得bundleeB
的实例,而不存在直接依赖关系。
请参阅您需要考虑开发时间上的服务。hotzst引用的教程应该会有所帮助。打包的基础是为每个eclipse项目创建一个包。然后,如何将它们打包在一起取决于要部署到的位置 我猜您目前使用EclipsePDE透视图来开发应用程序。我不建议这样做。如果您知道您不开发Eclipse RCP应用程序,那么我会考虑纯Eclipse + Maven或BDNoToes。我有很多钱。有关bndtools,请参阅
无论如何,你应该期待一段相当长的学习曲线。所以有些书可能有助于或类似。 你需要考虑开发时间上的服务。hotzst引用的教程应该会有所帮助。打包的基础是为每个eclipse项目创建一个包。然后,如何将它们打包在一起取决于要部署到的位置 我猜您目前使用EclipsePDE透视图来开发应用程序。我不建议这样做。如果您知道您不开发Eclipse RCP应用程序,那么我会考虑纯Eclipse + Maven或BDNoToes。我有很多钱。有关bndtools,请参阅 无论如何,你应该期待一段相当长的学习曲线。所以有些书可能会有帮助,比如或。谢谢你的帮助 通过一些尝试和错误,我通过导出包选项和导入包选项通过MANIFEST.MF获得了我想要的东西。关于第三方JAR的使用,我遇到了另一组问题,但我将在新问题中发布这些问题。谢谢您的帮助
通过一些尝试和错误,我通过导出包选项和导入包选项通过MANIFEST.MF获得了我想要的东西。关于第三方JAR的使用,我遇到了另一组问题,但我将在一个新问题中发布这些问题。我不理解您面临的问题。是关于提供和消费服务还是关于打包/部署?@ChristianSchneider我想这两者都有一点?提供和使用服务将在运行时进行,而打包和部署将在编译期间进行?我不理解您面临的问题。是关于提供和消费服务还是关于打包/部署?@ChristianSchneider我想这两者都有一点?提供和使用服务将发生在运行时,而打包和部署将发生在编译期间?