问题标签 [osgi-ds]

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 投票
4 回答
4193 浏览

java - OSGi:蓝图会取代声明式服务吗?

OSGi 的新 R4.2 规范描述了蓝图服务,用于依赖注入和服务连接。

Blueprint 是否取代了声明式服务(这仍然是规范的一部分),或者它们是否打算一起工作?

蓝图是否已经可用于流行的实现(Felix 和 Equinox)?

0 投票
0 回答
558 浏览

java - OSGi - 服务实现可以使用其他服务吗?

各位程序员好,

我最近开始从事一个 OSGi 项目。我试图习惯使用声明式服务的 OSGi 服务。我创建了一个接口包 (A)、一个实现此接口的包 (B) 和一个使用服务 (C) 的包。到目前为止,一切都很好。但是当我试图创建一个实现另一个接口(D)的包时,我发现我无法使用包(A)提供的服务。

所以我有 4 个捆绑包:

  • 包 A:API
  • Bundle B:Bundle 实现了 A
  • Bundle D:实现 E
  • Bundle E:另一个 api 包

为什么我不能使用捆绑 B 中的服务 E?

捆绑包 A

捆绑 B

捆绑包 D

捆绑 E

当我尝试运行代码时,Bundle B 上的 @Activate 方法不起作用,并且 Service siloCtrl.service 没有绑定。任何帮助,将不胜感激。先感谢您!

0 投票
2 回答
979 浏览

osgi - OSGi-DS:对 DS 组件中所需服务的可选引用,并不是真正可动态更新的

我想启动具有许多服务的 DS 组件是可选的,如果某些服务未启动,则这些组件不会被激活。所以我将这些可选服务的基数设置为可选,所以如果这些可选服务不可用,那么也可以激活目标组件。

但是现在的问题是,如果我将这些可选服务中的任何一个的配置更改为有效,因此服务变得可用,但它不会反映在该目标组件中

在这里,zimbra 组件不是可选的,所以每当我更改配置时,它都会在 DirectoryControllers 组件中受到影响,但对于 openidm、opendj 组件来说并非如此,当然它是可选的,但是在更改它们的配置有效时,它不会在 DirectoryControllers 组件中受到影响

我也尝试过绑定/取消绑定:

我是否遗漏了导致此问题的任何内容?

谢谢你。

0 投票
2 回答
370 浏览

java - 如何在不使用 DS 注释的情况下创建 osgi 服务的多个实例

我创建了一个 Osgi 服务。每次服务请求到来时,我都想为我的服务创建一个新实例。代码看起来像这样 -

在我的 Consumer 类中,我想访问 XyzHandler 的服务实例并设置属性 consumer。此外,我希望每次为每个请求都创建一个 XyzHandler 的新服务实例。我发现很少有文章提到使用 osgi 声明式服务注释可以实现这一点。 OSGi如何运行一项服务的多个实例

但我想在不使用 DS 1.3 的情况下实现这一目标。

如何在不使用注释的情况下做到这一点,或者如何使用 DS 1.2 做到这一点?

0 投票
3 回答
134 浏览

osgi - 持久声明式服务激活方法

我试图从 OSGi 规范中了解在激活方法无限期阻塞的情况下应该发生什么,但我没有找到答案。另一方面,Felix SCR 具有 管理激活/停用超时的属性,对吗ds.lock.timeout.millisecondsds.stop.timeout.milliseconds

问题:

  • 为什么 OSGi 规范没有提到激活/停用死锁管理?
  • 如果 DS 需要更多时间来运行其激活方法,增加默认 SCRds.lock.timeout.milliseconds值是否明智?还是完全避免激活方法并context.registerService在专用线程中使用“手动”注册服务更好?
0 投票
3 回答
412 浏览

osgi - 如何在 OSGi DS 组件中处理不同的 @Reference

我遇到了以下情况:服务器正在等待一个或多个函数。当一个函数被绑定时,就会调用 bindFunction。它需要调用任何SpecificSystem 的doSomething()。

当我的 OSGi 容器中没有 SpecificSystem 时,什么都不会发生,这很好,因为系统引用不满足。当我将特定系统添加到我的容器时会出现问题。在这种情况下,在设置系统引用之前调用 bindFunction 会导致 bindFunction 内部出现 NullPointerException。

是否有任何 OSGi 方式来确保在执行 bindFunction 时设置了系统引用,以便我可以在 bindFunction 中安全地调用 system.doSomething()?