【问题标题】:OSGi Bundle Repositories (How to host them on a Server)?OSGi Bundle Repositories(如何在服务器上托管它们)?
【发布时间】:2013-12-02 21:05:16
【问题描述】:

我想发布一个只是一个配置好的 OSGi 容器的产品。当容器启动时,它应该根据容器的配置下载并安装应用程序——包含应用程序所有功能的最新包。当应用程序的较新版本可用时,我希望应用程序自动下载和更新/安装较新版本的捆绑包,以便最终用户看起来无缝。

基于 Apache Felix OSGi Bundle Repository 文档的Motivation section(目前已过时),我认为这是 OBR 的目的。对吗?

如果没有,那么这种情况有哪些解决方案?

如果是这样:

  1. OBR 存储库是什么样的?我设想它看起来有点像一个 maven 存储库,可通过 Internet 访问,其中包含一个描述存储库中可用捆绑包的 XML 文件。

  2. 如何管理可以从 Internet 访问的存储库?

上述文档指出:

OBR“存储库服务器”不是必需的,因为所有功能都可能驻留在客户端。

但我假设确实存在一些“OBR 存储库服务器”,用于那些应该可以从 Internet 访问的存储库。在此示例情况下,我希望存储库不位于客户端,而是位于服务器上,以便可以轻松更新客户端。为此,我是否只需设置一个 HTTP 服务器来托管 1) 一些描述存储库中可用捆绑包的 xml 文件,以及 2) 捆绑包?

最后,有没有一个简单的例子来说明这一切是如何协同工作的?

【问题讨论】:

    标签: osgi


    【解决方案1】:

    您的理解完全正确。使用 OBR 时需要注意的主要事项是,当 SOEC 最终确定时,XML 格式发生了很大变化。有时“OBR 支持”是指旧样式,有时是新样式。只要客户端和服务器是一致的,任何一个都应该没问题。新格式更丰富,但目前对旧样式的支持更广泛。

    要设置自己的 http 托管,您可以使用 repoindex(以前称为 bindex)。 Apache Aries 也有一个repository generation tool

    使用 'index' 目标和 maven 捆绑插件将生成 OBR 元数据和bnd can also be directly configured to generate the repository.xml

    最后,如果您不想直接管理 http 服务器,Nexus 和 Karaf Cave 提供了 OBR 存储库托管。

    这个问题可能对您也有帮助:OSGI OBR repository hosting?

    【讨论】:

      【解决方案2】:

      这就是我曾经为我的一个项目使用 Maven 编译的方式。

      你需要什么:

      • 用于部署 jar 文件的 Maven 存储库(例如 Sonatype Nexus)

      • 一个 ftp 或一个 webDAV 服务器来上传 repository.xml 文件(Nexus Pro 可以这样做,但你必须付费...)

      在我的 POM 文件中,我添加了以下内容

      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>2.3.7</version>
              <extensions>true</extensions>
              <executions>
                  <execution>
                      <goals>
                          <goal>deploy</goal>
                      </goals>
                  </execution>
              </executions>
              <configuration>
                  <remoteOBR>repository.xml</remoteOBR>
                  <altDeploymentRepository>my.obr.name::default::ftp://obr.example.com</altDeploymentRepository>
                  <prefixUrl>http://my.maven.repository.com/content/groups/public</prefixUrl>
                  <ignoreLock />
              </configuration>
      </plugin>
      

      当您执行 mvn deploy 命令时,这将更新 ftp://obr.example.com/repository.xml 文件,该文件将链接到您的存储库中的 jars(因此是 prefixURL 标记)。

      my.obr.name 提及的是要放入 settings.xml 文件以进行身份​​验证的服务器的 ID。

      为此,我阅读了以下网站:

      http://www.flexthinker.com/2012/06/release-an-osgi-bundle-into-an-obr-with-maven/

      http://books.sonatype.com/mcookbook/reference/ch01s09.html

      在 felix 中,你只需要这样做:

      g! obr:repos add ftp://obr.example.com/repository.xml
      g! obr:deploy my-artifact
      

      我仍然存在的唯一问题是,repository.xml 文件中没有列出依赖项。

      也许您可以使用 Eclipse Orbit 来检索一些依赖项:

      http://download.eclipse.org/tools/orbit/downloads/

      https://bugs.eclipse.org/bugs/show_bug.cgi?id=406259

      但我还没有尝试过。

      【讨论】:

        猜你喜欢
        • 2016-09-12
        • 2015-07-20
        • 2016-09-07
        • 2015-03-11
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多