问题标签 [bndtools]

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 回答
749 浏览

osgi - 如何将 Equinox Weaving 与 bndtools 一起使用

由于示例很旧并且无法正常工作,我该如何使用equinox Weavingbndtoolsequinox Weaving

更新:

尝试运行 Hello world 的编织示例时

我有两个捆绑包:

bnd.bnd

方面捆绑:

bnd.bnd

启动.bndrun

当我运行启动时:我也得到 Hello world not hello aspect,Aspect Weaving Hooks Plug-in (Incubation) 设置为 Resolved

问题是什么?

0 投票
3 回答
17734 浏览

java - OSGi 捆绑包未启动:缺少要求 osgi.wiring.package;> &(osgi.wiring.package=org.apache.felix.dm)

我一直在尝试关注“使用 OSGi 构建模块化云应用程序”。在“创建第一个 OSGi 应用程序”一书的第 3 章中,作者描述了如何使用 bndtools 在 eclipse 中创建一个带有服务的简单 OSGi 应用程序。

下面是我的类和配置的屏幕截图。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我面临的问题是

'!无法解析捆绑包:[agenda.service.simple-0.0.1捆绑包中未解决的约束议程.service.simple [9]:无法解决9.0:缺少要求[9.0] osgi.wiring.package;(&(osgi.wiring.package=org.apache.felix.dm)(version>=3.0.0)(!(version>=4.0.0)))

] !无法启动捆绑议程.service.simple-0.0.1,异常捆绑议程.service.simple [9]中未解决的约束:无法解决9.0:缺少要求[9.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(version>=3.0.0)(!(version>=4.0.0))) ____________________________'

此外,当我尝试在 gogo shell 中发出有时也不能正确输入的命令时。但最终当它完成时,捆绑状态看起来像

G!lb gogo:CommandNotFoundException:找不到命令:b

G!lb gogo:CommandNotFoundException:找不到命令:llb

G!

G!

G!

G!

G!

G!

lb 起始级别 1 ID|状态|级别|名称

0 投票
1 回答
394 浏览

osgi - osgi (bndtools) 中的 Restlet 包无法启动。激活程序错误 com/sun/net/httpserver/HttpHandler

我正在迁移到bndtools一些我创建并在标准 Eclipse 环境中工作的 osgi 插件。我添加了Felix Web ConsoleJetty HTTP Service ,并用Felix等价物 替换了一些Equinox捆绑包。

当我运行一个需要org.restlet.jar的特定包时,该包会解析但不会激活。控制台输出是:

____________________________ 欢迎使用 Apache Felix Gogo

G!2015-05-25 00:06:33.471:INFO:oejs.Server:jetty-7.xy-SNAPSHOT 2015-05-25 00:06:33.545:INFO:oejsh.ContextHandler:started oejsServletContextHandler{/,null} 2015- 05-25 00:06:33.620:INFO:oejs.AbstractConnector:开始 SelectChannelConnector@0.0.0.0:8080 !无法启动捆绑包 org.restlet-2.3.2.v20150501-1520,异常激活器错误 com/sun/net/httpserver/HttpHandler 来自:org.restlet.engine.Engine:registerDefaultConnectors#839

我已经尝试过基于其他问题的解决方案,即这个建议设置运行属性org.osgi.framework.system.packages.extra = com.sun.net.httpserver (大概在我的 bndtools .bnd 文件中)的解决方案,以及另一个建议使用框架侦听器激活Restlet应用程序的解决方案——但这些不适用于我,和控制台输出是一样的。

我仍在学习,我将不胜感激任何导致解决方案的帮助,或者关于bndtoolsEclipse可能提供的任何方法或功能的提示,以帮助我追踪其原因。

顺便说一句,Felix Web Console正在工作,作为同一个插件的必需捆绑包。

这是我的 bndtools 配置:

0 投票
1 回答
73 浏览

java - 为什么 bnd 计算我的捆绑包需要可选服务(*、0..n、ReferenceCardinality.MULTIPLE)?

我的包定义了一个接口,以及一个使用该接口实现来调用它们的组件(如果存在一些......)。

一个很好的类比是 LogService;如果存在一个(或多个),则使用消息调用它们。

这是我的 DS 声明:

所以我希望我的包能够在有或没有该服务实现的情况下进行部署。

然而,这就是日食给我的:

日食要求

为什么?这根本不是要求!这显然是可选的。

我发现这张票似乎在谈论这个问题,但不清楚为什么它被关闭了。如票证中所述,我将此添加到我的 bnd.bnd 中:

-resolve.effective: 活跃;skip:="osgi.service"

0 投票
1 回答
412 浏览

java - 通过配置属性动态连接 OSGi 服务

我目前面临的问题是如何根据它们的配置属性动态地“连接”OSGi 服务。我想用声明式服务来做到这一点。

举一个具体的例子:我有两个不同的 OSGi 服务 A 和 B,它们都是 ManagedServiceFactories 并且需要配置。所以我可以有多个 A 实例和多个 B 实例,每个实例都有单独的配置。

我使用 Felix FileInstall、DS/SCR 和 BNDTools,我的配置看起来像这样(简化):

a-one.cfg: b.id = foo

a-two.cfg: b.id = bar

b-one.cfg: id = foo

b-two.cfg: id = bar

现在我想将服务 b-one 连接/绑定到 a-one 并将服务 b-2 连接到 a-2(取决于它们匹配的配置属性 b.id = id)。

目前我可以看到两种方法来实现这一点:

  1. 将服务 B 的所有可用实例绑定到服务 A 的实例,并根据其 id 选择适当的服务 B。
  2. 为服务 A 实现一个自己的 ManagedServiceFactory,它创建一个 LDAP 过滤器来查找服务 B 的正确实例。

对于解决方案 1.) 我不喜欢我需要将服务 B 的所有实例绑定到服务 A 的每个实例。我喜欢只绑定满足我的配置属性约束的服务 B 的实例。

对于解决方案 2。)我不喜欢这样,我需要挖掘到较低级别:拥有 ManagedServiceFactory 并通过手动查找正确的(LDAP 过滤)服务实例绕过 DS。

有谁知道更好的解决方案或“最佳实践”如何实现这一目标?我不确定 WireAdmin 规范是否可以帮助我?

欢迎使用 BNDTools/BND 注释的解决方案;)

蒂亚

干杯萨沙

0 投票
2 回答
193 浏览

eclipse - OSGi 子系统可以替代 Eclipse 功能吗?

OSGi R5 Enterprise 版本包含子系统规范。

  • OSGi 子系统是否包含 Eclipse 特性的所有功能?
  • 工具是否存在?

这种映射的目的是重用eclipse例如felixbnd/bndtools基于基础设施中的现有特征。

0 投票
3 回答
7488 浏览

java - OSGI 捆绑包依赖项

我创建了一个依赖于 SLF4J 的包,因此我将 Logback 用于 OSGI 实现。这一切都捆绑并安装好,但是当我开始捆绑时,我得到以下异常:

org.osgi.framework.BundleException:无法解析 com.felix.test [20](R 20.0):缺少要求 [com.felix.test [20](R 20.0)] osgi.wiring.package; (osgi.wiring.package=groovy.lang) 未解决的需求:[[com.felix.test [20](R 20.0)] osgi.wiring.package; (osgi.wiring.package=groovy.lang)]

我可以在我的清单文件中看到,我groovy.langImport-Package确定问题是嵌入了 Logback,但没有一个引用。

我用来创建捆绑包,这是配置:

这是我的清单:

我是正确的方法还是有更好的方法?

谢谢!

0 投票
1 回答
459 浏览

java - 无法使用 bndtools 插件运行简单的 osgi 应用程序

我正在尝试使用本教程中概述的过程运行一个简单的应用程序:BndTools 教程项目

这是我要加载的 osgi 项目/模块。

这是包含 BundleCounterActivator 类的包的 bnd.bnd 文件。

我正在尝试将此捆绑包上传到教程中定义的“运行捆绑包”配置。但是,我收到以下错误:

我的问题:如何为这个项目安装缺少的包:'org.osgi.framework'(或者更确切地说,给定链接中教程项目的 felix osgi 运行时环境设置)?任何帮助表示赞赏。

以下是所涉及步骤的屏幕截图:

1)给定'run.bndrun'文件 给定 run.bndrun

2) 添加捆绑需求 在此处输入图像描述

3) 尝试添加“BundleCounter”时出现错误 在此处输入图像描述

0 投票
1 回答
319 浏览

scala - 如何使用 bndtools 通过 Scala 创建 OSGi 包?

我知道有 Scala 特定的工具可以创建 OSGi 包,但我对 bndtools 很满意,我只想将 Scala 与 Java 一起编写或代替 Java。

0 投票
1 回答
295 浏览

osgi - 无法使用 bndtools 启动声明式服务 (DS) 组件

我已经为 Eclipse 安装了标准bndtools插件,启动并运行了 apache felix osgi 运行时。我正在尝试了解声明性服务 (DS) 组件。显然,在没有注释之前(bndtools 教程中给出了一个示例),组件是使用 xml 数据编写的。这就是我想要做的。

这是一个简单的类(将作为 DS 组件发布):“HelloComponent.java”

这是进行组件声明的 xml 文件:“minimal.xml”

这是 bndtools 应该使用的 .bnd 文件来生成最终将发布到 OSGi 运行时的 jar 文件:“minimal_ds.bnd”

请注意,我在主机运行时 OSGi 容器中启动并运行了以下捆绑包:

尽管一切都在积极运行,但我无法弄清楚为什么 DS 组件没有被初始化(我应该看到控制台输出:“HelloComponent created.”)。任何帮助表示赞赏。

最后,这里是项目目录结构: