【问题标题】:Managing a Large OSGi Application管理大型 OSGi 应用程序
【发布时间】:2010-11-17 01:27:47
【问题描述】:

我有一个大型的、不断增长的 OSGi 应用程序,其中包含许多捆绑包。我很想知道管理此类应用程序的最佳方法。目前,我使用的是 Eclipse 和 Maven,虽然这对于构建捆绑包(通过 maven-bundle-plugin)非常有用,但到目前为止,管理整个应用程序并不容易。

我想做的是要么有一个运行配置,要么有一个可以启动的 pom.xml,然后构建和启动整个应用程序/项目。另外,我想要一些对调试有用的东西。

我听说过 PAX Construct 并已将其安装在 Eclipse 中,但到目前为止帮助不大(也许我没有正确使用它)。

我确信有些人拥有正确管理的大型 OSGi 应用程序。任何可以分享的建议都会有很大帮助。

谢谢你, 斯蒂芬

【问题讨论】:

    标签: java eclipse maven-2 osgi


    【解决方案1】:

    我认为这个领域目前的支持很差。 OSGI 并没有真正定义任何关于部署或打包的内容,因此它取决于其他框架(例如 Eclipse)来提出自己的方式来做这件事。

    如果您正在构建一个 RCP(Eclipse 基础)应用程序,那么 Eclipse 系统会完成所有这些工作,直至创建 exe 等。但是构建主要在 Eclipse 工作区上完成,无头构建更棘手。 Tycho 项目试图通过加入 Maven 和 Eclipse 构建周期来使这更明智,但它仍然专注于 RCP 应用程序而不是通用 OSGI。

    如果您不进行 RCP,这也是我的情况,那么您可能必须推出自己的解决方案,因为我还没有找到任何通用解决方案。以下是我们所做工作的概要:

    我们定义了一个 POM 项目,其中列出了您的应用程序中包含的所有包。这个项目所做的只是列出引用 - 让我们称之为“捆绑列表”项目。

    然后,我们使用 pax provision 以开发模式运行项目。这是通过将“bundle-list”pom 设置为 pax 项目的配置 pom 的父级来实现的(通常在“provision”文件夹中)。然后,当您启动 pax 时,它会使用该项目中的捆绑包列表来启动 OSGI。 “bundle-list”项目中的捆绑包引用必须标记为“已提供”范围才能工作。

    然后,为了创建一个发行版,我们有另一个项目。该项目还具有“捆绑列表”项目作为其父项目。该项目使用各种插件来创建分发包,包括下载捆绑包 jar。该发行版包含启动 OSGI 的脚本,但这些是手写的,这里没有 pax 系统。

    这很适合我们将包列表保存在一个地方,但是仍然有很多手写脚本,并且在两个系统之间共享配置存在问题 - 例如。配置文件,捆绑启动级别等。

    【讨论】:

      【解决方案2】:

      嗯……

      这一切都取决于您所说的“管理”应用程序是什么意思。

      对于开发时间的启动、构建和调试 - Eclipse IDE 应该非常适合。

      Maven...我不能说它,因为我自己从未使用过它。

      我们有一个相当大的基于 Eclipse 的应用程序(实际上是几个),在开发方面,除了 Eclipse 之外,我们没有使用任何特别的东西,它是集成的 SCM。

      在cc build server中,我们也使用headless eclipse来进行构建和打包。

      现在,工作空间的设置最近因所有依赖项和中间构建步骤而有些失控,因此我们正在调查 Buckminster 以管理目标平台和工作空间资源的具体化。

      如果成功,我们可能也会转向与 Bucky 一起构建 - 它看起来很有希望。

      (我对 PAX 没有任何经验,但乍一看,它看起来也很有前途......)

      【讨论】:

        【解决方案3】:

        我对 OSGi 很陌生,但是,

        难道不能以这样的方式使用 OBR 服务吗? 您将拥有一个需要捆绑包的 OBR 存储库文件 并让 OBR 服务找出依赖关系并为您填充 OSGIhost?

        【讨论】:

          【解决方案4】:

          可以通过Pax Runner 进行运行配置。它允许您选择 OSGi 平台实现、指定配置文件(为某些角色预先打包的捆绑包集,例如 weblogds 等)并具有良好的配置支持,例如它可以从Maven 存储库。结果,您可以拥有类似的运行配置

          --platform=felix
          --log=INFO
          --profiles=scalamodules,ds,config,log
          mvn:com.my/bundle/1.0.1-SNAPSHOT@update
          # other bundles
          

          如果您的应用程序非常大或者您有不同的应用程序,也可以创建自己的配置文件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-02-10
            • 2013-03-26
            • 2019-05-21
            • 1970-01-01
            • 2014-07-05
            • 1970-01-01
            • 2013-12-18
            • 1970-01-01
            相关资源
            最近更新 更多