问题标签 [apache-karaf-feature]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
336 浏览

maven - 在 Karaf 容器中打包和部署 OSGi 包和 Karaf 功能

最近,我一直在做 Apache Karaf 项目。

第一个是CXF REST 服务示例,第二个是运行和部署 Karaf 容器的Apache Karaf Maven 示例。

我想做的是将这两者结合起来。这个想法是从存储库下载几个 JAR 文件,然后将它们打包到 Karaf 中。

如果任务每天都在重复,那么手动构建 Karaf 程序集然后将创建的 JAR 文件部署到 Karaf 下的部署文件夹中并不是一个好主意。如果可能的话,我非常想自动化这个?

0 投票
0 回答
30 浏览

java - 部署之间 Karaf 中的捆绑包完整性不一致

背景

我在 RHEL 6 上使用 Karaf 4.2.0 和最新的可用 Oracle JDK 1.8.x。

出于安全原因,我试图找到验证 Karaf 提供的捆绑包完整性的最佳方法。我目前使用的方法是计算找到的所有 bundle.jar 文件的 SHA1 哈希值,$KARAF_HOME/data/cache/bundle*/version0.0/并将它们与我在不同环境中部署到另一个 Karaf 实例的文件进行比较。

部署本身是完全自动化的,并且每次都能正常工作。部署开始前,先停止Karaf,然后data/cache清理data/tmp文件data/kar夹,重新启动Karaf,按照以下两个步骤进行部署:

  1. 安装包含我的应用程序需要运行的所有第三方捆绑包的胖 KAR,其中:kar:install

  2. 通过托管在私有 Artifactory 实例上的 Karaf 功能文件以及引用包安装我的应用程序包,其中:feature:repo-add -i

问题

每次部署都会导致文件夹中的第三方包data/cache/具有不同的 SHA1 哈希,即使 JAR 内容相同(通过解包并运行递归差异来验证)。此外,SHA1 与 Maven Central 中的不匹配。看起来 Karaf 在从 为 JAR 提供服务的过程中重新打包了 JAR data/cache,从而产生了 SHA1 总和的差异。

对于我自己的应用程序包,它们的 SHA1 哈希值在应用程序重新部署(以及将相同功能文件部署到不同环境)之间是一致的,但始终与我的私有 Artifactory 服务器上的不同。

有什么方法可以绕过/解决 Karaf 提供的捆绑包完整性不一致的问题data/cache

0 投票
1 回答
110 浏览

apache-karaf - 当 loginModule jar 在部署文件夹中时,Karaf Jaas 与自定义 LoginModule 结合不起作用

我将 Karaf 4.0.7 与 com.tagish.jaasmodules 结合使用,可以在https://github.com/chriseldredge/tagish-jaas找到。当我的代码被编译成 jars 并放置在 karaf/system/company/prefix/folders/.../ 文件夹中时,它工作正常,其中 features.xml 文件包括如下(公司前缀文件夹和不相关的功能被删除):

daemons.server.dependencies-features.xml:

jaasmodules.jar 文件也存在,并且包含在与上面和下面的功能文件相同的文件夹中

daemons.server-features.xml

然后将这些功能添加为 featuresRepositories 并设置为在启动时安装在 org.apache.karaf.features.cfg 中。

我的 karaf/deploy 文件夹中有一个 JaasPropertiesLoginModule.xml 文件,其内容如下:

以上内容在标准部署中完美运行,除了部署文件夹中的 JaasPropertiesLoginModule.xml 之外,所有内容都位于系统文件夹或系统文件夹的子目录中。当我使用上下文名称 ALM 创建一个新的 LoginContext 时,它可以正确找到 ALM 配置并使用正确的设置初始化 FileLogin 模块,并且此 FileLogin 模块完全可以登录。

但是,在我们的本地开发环境中,我们所有的 jar 和依赖项都位于部署文件夹中 JaasPropertyLoginModule.xml 文件旁边,而不是系统文件夹,我们也不使用功能文件(这意味着我们有时有手动启动我们的大多数捆绑包,因为它们不会自动启动)。在这个特定的配置中,当我使用上下文名称 ALM 创建一个新的 LoginContext 时,它会给出以下错误:

我需要在某处进行更改以允许 JaasPropertiesLoginModule.xml 文件识别 karaf/deploy 文件夹而不是 karaf/system 文件夹中的 JaasModules.jar 文件吗?

这是启动过程的 Karaf 日志文件:

0 投票
1 回答
221 浏览

osgi - Karaf Cellar:安装 Kar 文件时出现问题 -> Maven 找不到工件

目前,我有两个地窖节点,在同一组中具有相同的配置。

我在节点 A 中配置了 maven,并在我的网络中配置了一个本地存储库,两个节点都可以访问。为此,我在文件“/karaf/etc/org.ops4j.pax.url.mvn.cfg”中编辑了“org.ops4j.pax.url.mvn.localRepository”。

然后我尝试通过以下命令在集群中安装 Kar 文件:

所有功能和捆绑软件都安装在 noda A 中,没有问题。但是节点 B 在找到工件时遇到了问题:

我还尝试在 org.ops4j.pax.url.mvn.repositories 列表中添加 localRepository,但没有任何改变。

卡拉夫版本:4.1.5

地窖版本:4.1.3

0 投票
1 回答
349 浏览

apache-karaf - 在 apache karaf 启动时安装预编程功能

我正在开发一个使用 apache karaf 的 opendaylight 项目。在程序开始时,我需要 karaf 安装一些功能。目前(这有效)我手动将其输入到 shell 中并安装了功能:

这一切都有效。但是,我需要的是在开始时自动安装此功能。我知道有一个shell.init.script文件,我试图将此行添加到它的底部:

feature:install odl-restconf odl-mdsal-apidocs odl-openflowplugin-flow-services-rest odl-openflowplugin-app-table-miss-enforcer odl-openflowplugin-nxm-extensions odl-restconf-all odl-openflowplugin-flow-services

但是当我这样做时,我收到以下错误:

/opt/opendaylight-0.11.0/etc/shell.init.script: Command not found: feature:install

我也知道添加 featuresBoot 元素org.apache.karaf.features.cfg

featuresBoot = odl-restconf(为了便于测试,我将其缩短为仅一项功能)

我得到这个错误:

所以,我可以说 karaf 至少承认 shell.init.script 和 org.apache.karaf.features.cfg,但是我显然使用了错误的语法。我已经用尽了谷歌搜索来找到正确的语法或找到这方面的例子。事实上,当我为这个问题做谷歌时,我得到了“使用 shell.init.script”文件的建议,没有示例或如何使用它的文档链接。

例如,这是一个类似的问题脚本,用于在 apache karaf 开始时运行命令,但答案实际上并不完整或不完整。我不知道在哪里放置建议的命令等。

无论如何,我希望这里有人可以告诉我在 shell.init.script 或 org.apache.karaf.features.cfg 中使用什么特定命令来实现这一目标。(目标是等效的初始化命令来完成我可以手动成功完成的操作,如顶部所述)

更新:我也尝试过这种类型的命令:

echo "feature:install odl-restconf odl-mdsal-apidocs odl-openflowplugin-flow-services-rest odl-openflowplugin-app-table-miss-enforcer odl-openflowplugin-nxm-extensions odl-restconf-all odl-openflowplugin-flow-services" | /opt/opendaylight-0.11.0/bin/karaf

这也没有奏效。我没有收到任何错误消息,我只知道我的 restconf 不起作用。有趣的是,我确实看到所有功能都通过管道传输到 karaf shell 中,并且 shell 似乎确实冻结了(似乎它正在处理命令),但是在光标返回给我之后就不行了。

感谢@jamo,因为他的回答让我找到了答案。我只需要将它添加到 etc/org.apache.karaf.features.cfg:

featuresBoot = odl-restconf,odl-mdsal-apidocs,odl-openflowplugin-flow-services-rest,odl-openflowplugin-app-table-miss-enforcer,odl-openflowplugin-nxm-extensions,odl-restconf-all,odl-openflowplugin-flow-services, 25921329-8d07-420b-af13-94948bf1a78d

我相信诀窍25921329-8d07-420b-af13-94948bf1a78d是在默认的 cfg 文件中设置最终的一些十六进制值,我确保它保留在那里。

0 投票
1 回答
160 浏览

apache-karaf - 完整的 OpenDaylight 集成分发包的源代码

我的团队使用OpenDaylight 0.11.0作为 SDN 控制器的基础。我想知道 .tar.gz 是如何构建的?

即,是否有 github 上的基础项目和创建该 .tar.gz 文件的 maven 命令?

我发现了很多不同的与 opendaylight 相关的模块、功能和代码库,以至于我根本找不到构建上述 tar.gz 的完整源代码。我认为它是许多不同 opendaylight 模块的组合,但是我确信有一个父项目将它们捆绑在一起。

我的最终目标是为我们的团队构建一个可以feature:installed在 ODL 0.11.0 的 karaf 控制台中的自定义功能。

我们已经按照此处的开发指南进行了操作,但是该基础项目不包含顶部链接的 ODL 0.11.0 上可用的许多功能。即,当您构建该示例项目时,它不具备与上面链接的 ODL 0.11.0 tar.gz 相同的一组功能。

0 投票
0 回答
131 浏览

osgi - 在 karaf 中使用 cxf 时出错 java.lang.LinkageError

我正在使用 cxf 3.3.5 和 karaf 4.2.7 我有一个应用程序是一个肥皂客户端并请求肥皂服务,如果远程服务上没有发生错误,那么一切都很好,但是当发生异常时,然后我看到正确错误处理位置的错误

据我了解,问题出在 javax.xml.soap 包中,该包已加载 saaj-api(在 feature:install cxf 期间安装)

我看到了主题http://karaf.922171.n3.nabble.com/Loader-constraint-violation-javax-xml-soap-SOAPFault-td4056103.html,但据我了解仍然没有解决方案

有任何想法吗?

0 投票
1 回答
177 浏览

apache-camel - apache-camel 3.4.0 - 执行命令时出错:camel-catalog/0 没有匹配的功能

骆驼版本 2.15.2/2.24.1 的预期行为

使用骆驼 3.x- 在 Karaf Container 上部署功能“camel-catalog”时出现异常-

karaf@root()> 功能:安装骆驼目录执行命令时出错:骆驼目录/0 没有匹配的功能

查询 - 升级后的骆驼版本 3.4.0 现在功能 ="camel-catalog" 不存在,但它需要安装在 Karaf 容器中所以我们可以做些什么来解决这个问题。 https://repo1.maven.org/maven2/org/apache/camel/karaf/apache-camel/3.4.0/apache-camel-3.4.0-features.xml

非常欢迎任何帮助/建议。

0 投票
1 回答
104 浏览

apache-karaf - 如何使用 Pax-Web 在 Karaf 4.3.2 上运行 Vaadin 8 或 20 应用程序?

我以为我在某个地方读到了可以在以下内容之间切换的内容:

码头
雄猫
野蝇

feature:install war但是,对于与.

好像这还不够,我在 Jetty 上几乎没有成功(版本 9.4.40v20210413 似乎在 Karaf 4.3.2 中,这是相当新的,所以原则上应该可以工作)。

我试图部署一个 Vaadin 8.5.2 应用程序(我从 8.6 读到某些东西可能会被破坏,我不想作为第一件事进行调查)。

所以 connect4 应用程序应该可以正常工作,但是浏览 localhost:8181/connect4 会给我一个 403 错误。

我怎样才能解决这个问题?(命令比“做什么”更受赞赏,因为我目前可能不明白“如何”实现这一点,因为我是这方面的初学者)。

而列表中的另一个应用程序是 Vaadin20 生产模式应用程序,它在启动时给了我一个 NPE,所以我想先尝试其他两个应用程序容器来辅助调试。

如果有的话,有人可以指出我的相关文件吗?

0 投票
0 回答
68 浏览

apache-karaf - Opendaylight Karaf 在安装引导功能时出错

我正在尝试从GitHub 存储库代码启动 Opendaylight Nemo ,经过很长时间解决依赖项版本和替换一些旧方法(现在已弃用或不支持)后,我设法构建了代码。但是,当我启动 Karaf 并尝试安装引导功能时,出现此错误

按照错误链,我认为错误是由于org.apache.felix.cm.json导致的,它是所有显示的错误中唯一缺少的包。我也尝试手动添加 jar 文件,但它不起作用;我该如何解决?