问题标签 [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.
maven - 在 Karaf 容器中打包和部署 OSGi 包和 Karaf 功能
最近,我一直在做 Apache Karaf 项目。
第一个是CXF REST 服务示例,第二个是运行和部署 Karaf 容器的Apache Karaf Maven 示例。
我想做的是将这两者结合起来。这个想法是从存储库下载几个 JAR 文件,然后将它们打包到 Karaf 中。
如果任务每天都在重复,那么手动构建 Karaf 程序集然后将创建的 JAR 文件部署到 Karaf 下的部署文件夹中并不是一个好主意。如果可能的话,我非常想自动化这个?
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,按照以下两个步骤进行部署:
安装包含我的应用程序需要运行的所有第三方捆绑包的胖 KAR,其中:
kar:install
通过托管在私有 Artifactory 实例上的 Karaf 功能文件以及引用包安装我的应用程序包,其中:
feature:repo-add -i
问题
每次部署都会导致文件夹中的第三方包data/cache/
具有不同的 SHA1 哈希,即使 JAR 内容相同(通过解包并运行递归差异来验证)。此外,SHA1 与 Maven Central 中的不匹配。看起来 Karaf 在从 为 JAR 提供服务的过程中重新打包了 JAR data/cache
,从而产生了 SHA1 总和的差异。
对于我自己的应用程序包,它们的 SHA1 哈希值在应用程序重新部署(以及将相同功能文件部署到不同环境)之间是一致的,但始终与我的私有 Artifactory 服务器上的不同。
有什么方法可以绕过/解决 Karaf 提供的捆绑包完整性不一致的问题data/cache
?
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 日志文件:
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
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 文件中设置最终的一些十六进制值,我确保它保留在那里。
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 相同的一组功能。
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,但据我了解仍然没有解决方案
有任何想法吗?
apache-camel - apache-camel 3.4.0 - 执行命令时出错:camel-catalog/0 没有匹配的功能
骆驼版本 2.15.2/2.24.1 的预期行为
下面的网址具有“骆驼目录”的功能 https://repo1.maven.org/maven2/org/apache/camel/karaf/apache-camel/2.15.2/apache-camel-2.15.2-features.xml
<feature name="camel-catalog" version="2.15.2" resolver="(obr)" start-level="50"> <feature version="2.15.2">camel-core mvn:org.apache. camel.karaf/camel-karaf-commands-catalog/2.15.2
使用骆驼 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
非常欢迎任何帮助/建议。
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,所以我想先尝试其他两个应用程序容器来辅助调试。
如果有的话,有人可以指出我的相关文件吗?
apache-karaf - Opendaylight Karaf 在安装引导功能时出错
我正在尝试从GitHub 存储库代码启动 Opendaylight Nemo ,经过很长时间解决依赖项版本和替换一些旧方法(现在已弃用或不支持)后,我设法构建了代码。但是,当我启动 Karaf 并尝试安装引导功能时,出现此错误
按照错误链,我认为错误是由于org.apache.felix.cm.json导致的,它是所有显示的错误中唯一缺少的包。我也尝试手动添加 jar 文件,但它不起作用;我该如何解决?