【问题标题】:how to install and run osgi bundle in apache karaf如何在 apache karaf 中安装和运行 osgi bundle
【发布时间】:2012-07-08 19:00:12
【问题描述】:

我有一个简单的问题。 我关注了tutorial 并创建了一个 HelloWorld osgi 包。 如何使用 apache Karaf 安装和启动这个包? 如何使用 osgi:install 命令引用捆绑包?

谢谢。

【问题讨论】:

    标签: java apache osgi bundle


    【解决方案1】:

    弗兰克的回答很快帮助了我:
    我用这个原型创建了一个包:

    
        mvn archetype:generate \
        -DarchetypeGroupId=org.apache.karaf.archetypes \
        -DarchetypeArtifactId=karaf-bundle-archetype \
        -DarchetypeVersion=2.2.8 \
        -DgroupId=com.mycompany \
        -DartifactId=com.mycompany.bundle \
        -Dversion=1.0-SNAPSHOT \
        -Dpackage=com.mycompany.bundle
    
    然后我做了一个mvn eclipse:eclipse 和mvn install。 将生成的 jar 复制到我正在运行的 JBoss Fuse 服务器的部署目录后,它会打印“Starting the bundle”。 :-)

    【讨论】:

      【解决方案2】:

      好的,这是另一个问题,但这里是:

      您几乎走在正确的轨道上,我已经测试了您链接到的 Karaf 开发人员指南中的那个(second mvn 调用)。文档不太正确,我需要更改两点:

      • 版本已关闭,2.2.5 确实有效(在我的机器上),将其更改为 2.2.8 似乎有所帮助。
      • 包名称是 com.mycompany.package。由于 package 是一个关键字,因此无法编译,因此我将其更改为 com.mycompany.bundle。

      所以我的原型命令是:

      mvn archetype:generate \
      -DarchetypeGroupId=org.apache.karaf.archetypes \
      -DarchetypeArtifactId=karaf-bundle-archetype \
      -DarchetypeVersion=2.2.8 \
      -DgroupId=com.mycompany \
      -DartifactId=com.mycompany.bundle \
      -Dversion=1.0-SNAPSHOT \
      -Dpackage=com.mycompany.bundle
      

      然后进入新建的项目文件夹:com.mycompany.bundle:

      cd com.mycompany.bundle
      

      还有一个 mvn 安装:

      mvn install
      

      然后'target/'文件夹下有一个jar文件,你可以按照我之前说的安装到Karaf安装中。

      在 Eclipse 中创建包

      • 新建 -> 插件项目 -> 选择名称 -> 检查参数 -> 如果你喜欢,可以使用模板。

      • 选择您的项目 -> 导出 -> 插件/片段 -> 选择一个文件夹

      这是你的 jar 文件。

      【讨论】:

      • 谢谢你 :) 那行得通。我还有两个问题: mvn install 命令将在目标文件夹中生成所有类和 jar 和 Manifest.mf。如果我想自己配置我的捆绑包怎么办?我必须在哪里删除 Manifest.mf 文件?我可以简单地创建一个 META-INF 文件夹并将其放在那里吗?第二个问题:Equinox容器上有很多教程和osgi教程的how to。由于 osgi 是一个规范,当我使用 apache karaf 而不是 equinox 时,它应该几乎没有区别,对吧?所以我可以使用 Eclipse -> Plug-in Project 开发我的包。 ???
      • 看个人喜好:要么配置 pom.xml 文件,然后配置 pom 文件以生成 MANIFEST 文件,要么创建自己的清单文件(例如Eclipse 中的示例)。这是一个非常基本的决定:您是要让 Maven 管理您的清单文件,还是要自己使用 Eclipse 来管理?
      • 我添加了 Eclipse 的说明
      • 我想使用 maven 来管理我的清单文件。当我遵循 eclipse 方式时,我可以毫无问题地导出和导入包。使用 Maven,我不知道它是如何工作的。如果我有两个项目包(都使用 mvn archtype 创建)并且我想将一个包设置为另一个包的依赖项,我必须引用 pom 文件中的包...( 标签)对?这是如何工作的?
      • 您必须配置 pom 文件的“”部分。本页说明:felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html
      【解决方案3】:

      您可以将包放入“部署”目录,Karaf 会注意到并安装它。

      【讨论】:

      • 感谢您的回复。我现在使用 maven karaf-bundle-archetype 创建了一个 osgi 包:(链接:karaf.apache.org/manual/latest-2.2.x/developers-guide/…)但我仍然无法在 Karaf 中安装和运行该包。如何从我的包中生成一个 *jar 文件,以便我可以将它放到部署目录...?
      • 要将其添加到部署目录,从项目的根文件夹(pom.xml 所在的位置)运行 mvn clean package。这将在目标文件夹中生成一个 jar 文件。从那里将其拖放到部署中。
      猜你喜欢
      • 2016-06-26
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多