问题标签 [declarative-services]

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

eclipse - 启动 OSGI 声明式服务导致线程错误

我有一个需要两个数据库连接的 RCP 3.7 应用程序,每个数据库的代码都在一个单独的包中。以前数据库启动是在 Activator.start() 方法中完成的。我对代码进行了大量重构,将数据库启动移动到两个声明式服务中。这实现了打破捆绑包之间的紧密耦合和过度包暴露的目标(几乎所有内容都被导出)。

我现在面临的挑战是这两个服务启动不够快,工作台加载并且我遇到线程冲突。我将两个服务都设置为立即=真。捆绑包的启动顺序是 eclipse.osgi 为 -1(默认),equinox.ds 和 equinox.common 为 2,core.runtime 为默认值。我已经尝试为我的捆绑包添加开始级别,但它没有帮助,所以删除它们。

关于如何确保数据库在服务返回之前启动的任何想法或建议?

0 投票
1 回答
1501 浏览

eclipse - 无法在 Eclipse 上运行配置管理

我正在尝试使用 Configuration Admin 将配置信息传递给捆绑包。我正在使用基于 OSGI 的 Equinox 实现的声明性服务。首先,因为我找不到 Config Admin 的 Equinox 实现,所以我已经安装了 felix 实现,所以如果有人建议我在哪里可以获得 Equinox 版本,那就太好了。

我的主要问题是:我在运行程序时不断收到以下错误。似乎一个空的“配置”对象正在传递给我的更新方法。

我制作了一个配置器包,它创建了配置对象,它的激活方法(由声明性服务调用)中的主要内容是:

实现 managedServices 的包内的更新方法如下:

奇怪的是,当我停止并启动正在更新的包时,它总是显示“配置等于 null”,就好像我还没有创建配置对象一样。我在这里想念什么?我花了将近 2 周的时间试图解决运行配置管理员的问题,但这占用了我太多时间。我真的很感激有关此的一些信息。发送!!

编辑:这里我添加了注册 ManagedService 类的“激活”方法。

0 投票
0 回答
277 浏览

osgi - 如何为特定捆绑版本的 DS 组件创建工厂配置?

我有一个基于 DS 的组件,它具有 servicefactory 注释属性和 ConfigurationPolicy.REQUIRE。我正在使用 ConfigAdmin 创建此类服务的实例。

为了创建服务实例,我在扩展包中使用了以下 CM 服务方法:

假设我同时安装了包含该组件的捆绑包的多个版本。如何为特定版本创建配置?

我知道locator参数的存在,我之前把它设置为null只是因为我不知道使用哪个值。如何知道每个 DS 组件的期望值?

0 投票
1 回答
43 浏览

declarative-services - OSGI 声明式服务不打印任何内容

亲爱的天才程序员!我一直在使用 OSGI 框架,并试图在我的程序中应用声明式服务,但它在屏幕上什么也没打印。我的程序很简单,只有一个接口,一个类实现它,一个类作为客户端使用接口。

- 界面是:

- 该类实现接口,因为服务是:

注册服务的 XML 是:

该服务的清单文件是:

- 现在,这是作为客户端使用服务并打印结果的类(该类位于其他插件项目中,与之前存储接口和实现类的插件项目不同) ):

- 这是消费和绑定消费者类服务的XML文件:

- 这是清单文件:

- 这是屏幕上的结果:

(没啥事儿)

  • 但是当我使用 jUnit 测试来测试 DateConsumer 类中的方法 activate() 时,它起作用了。但是,当我尝试通过 OSGI 框架运行插件项目时,什么也没有发生。

我希望有人知道这个问题并帮助我。提前非常感谢!

0 投票
2 回答
715 浏览

java - 以 0..n 基数绑定 OSGi 服务的良好做法?

假设我有一个捆绑包想要向所有听众广播信息。考虑到我正在使用MyComponent消耗 0..n的声明性服务ComponentListeners,我会有这样的事情:

我的问题是:

  1. 推荐使用 0..n 基数吗?我发现的唯一示例来自Apache Felix 教程,与上面的教程类似。
  2. 观察者/可观察方法是否被认为是 OSGi 中的良好实践?
  3. 如果我想通知所有听众,我应该listener.updateData(data);为每个听众调用不同的线程,对吗?这样,我确保将同时通知所有听众。
0 投票
1 回答
63 浏览

java - OSGi 本地集成测试在精益示例项目上失败

我已经建立了一个 maven、osgi、pax、声明式服务测试项目,但我遇到了奇怪的行为。使用声明式服务的集成测试存在问题。

当通过本地运行时,测试中止并出现错误(日志如下)mvn install。当我通过eclipse将它作为junit测试用例执行时,它可以工作。当在 ci 服务器上调用相同的 maven 命令时,它也可以工作(日志也在下面)。

所以很明显我在这里遗漏了一些东西。你能帮我解释一下出了什么问题吗?


数据

错误日志:https
://github.com/mbe24/mode/issues/2 ci 构建日志:https ://travis-ci.org/mbe24/mode/builds/36392361

0 投票
1 回答
1600 浏览

java - 如何配置 OSGI 声明式服务范围?

有人可以解释一下如何将 OSGI DS 配置为单例吗?我使用 Equinox 作为 OSGi 容器。

可控硅元件

OSGI 控制台输出

osgi> services (objectClass=foo.bar.services*)
{foo.bar.services.Dictionary}={
component.name=Simple Dictionary,
component.id=0,
service.id=51,
service.bundleid=7,
service .scope=bundle
}
"由捆绑注册:" foo.bar.services_1.0.0.qualifier [7]
"没有捆绑使用服务。"

0 投票
1 回答
238 浏览

osgi - Equinox 中的远程声明式服务

我正在尝试使用 Eclipse ECF 提供远程声明性服务。在服务提供者组件定义中,我设置了以下属性:

但是我不知道如何从消费者端使用这些属性来发现服务。
(我希望能够从一个 osgi 环境提供服务并从另一个 osgi 发现它。)

0 投票
1 回答
98 浏览

spring - 如何将声明性服务注入我的 Spring bean

我有一个公开声明性服务的第三方库。但我有一个春豆课。

如何将此声明性服务注入到我的 spring bean 类中?

0 投票
3 回答
844 浏览

osgi - 具有相同接口的 OSGI 服务组件

我需要创建具有相同接口的服务组件。这意味着我对相同的接口有不同的实现。我试图创建两个具有相同界面的组件,其中一个仅处于活动状态。

我正在使用Equinox声明。你有更好的设计来解决这个问题吗?请在下面找到我的配置。

组件1.xml

组件2.xml

从消费者访问组件

消费组件

comp1.xml

comp2.xml

当我尝试通过 ConsumeCompOne 和 ConsumeCompTwo 类分别访问 comp1 和 comp2 时,我总是得到相同的组件,无论是 comp1 还是 comp2。请帮我解决这个问题。

先感谢您

牧牛姑娘