问题标签 [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.
java - OSGi:蓝图会取代声明式服务吗?
OSGi 的新 R4.2 规范描述了蓝图服务,用于依赖注入和服务连接。
Blueprint 是否取代了声明式服务(这仍然是规范的一部分),或者它们是否打算一起工作?
蓝图是否已经可用于流行的实现(Felix 和 Equinox)?
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 没有绑定。任何帮助,将不胜感激。先感谢您!
osgi - OSGi-DS:对 DS 组件中所需服务的可选引用,并不是真正可动态更新的
我想启动具有许多服务的 DS 组件是可选的,如果某些服务未启动,则这些组件不会被激活。所以我将这些可选服务的基数设置为可选,所以如果这些可选服务不可用,那么也可以激活目标组件。
但是现在的问题是,如果我将这些可选服务中的任何一个的配置更改为有效,因此服务变得可用,但它不会反映在该目标组件中
在这里,zimbra 组件不是可选的,所以每当我更改配置时,它都会在 DirectoryControllers 组件中受到影响,但对于 openidm、opendj 组件来说并非如此,当然它是可选的,但是在更改它们的配置有效时,它不会在 DirectoryControllers 组件中受到影响
我也尝试过绑定/取消绑定:
我是否遗漏了导致此问题的任何内容?
谢谢你。
java - 如何在不使用 DS 注释的情况下创建 osgi 服务的多个实例
我创建了一个 Osgi 服务。每次服务请求到来时,我都想为我的服务创建一个新实例。代码看起来像这样 -
在我的 Consumer 类中,我想访问 XyzHandler 的服务实例并设置属性 consumer。此外,我希望每次为每个请求都创建一个 XyzHandler 的新服务实例。我发现很少有文章提到使用 osgi 声明式服务注释可以实现这一点。 OSGi如何运行一项服务的多个实例
但我想在不使用 DS 1.3 的情况下实现这一目标。
如何在不使用注释的情况下做到这一点,或者如何使用 DS 1.2 做到这一点?
osgi - 持久声明式服务激活方法
我试图从 OSGi 规范中了解在激活方法无限期阻塞的情况下应该发生什么,但我没有找到答案。另一方面,Felix SCR 具有 管理激活/停用超时的属性,对吗ds.lock.timeout.milliseconds
?ds.stop.timeout.milliseconds
问题:
- 为什么 OSGi 规范没有提到激活/停用死锁管理?
- 如果 DS 需要更多时间来运行其激活方法,增加默认 SCR
ds.lock.timeout.milliseconds
值是否明智?还是完全避免激活方法并context.registerService
在专用线程中使用“手动”注册服务更好?
osgi - 如何在 OSGi DS 组件中处理不同的 @Reference
我遇到了以下情况:服务器正在等待一个或多个函数。当一个函数被绑定时,就会调用 bindFunction。它需要调用任何SpecificSystem 的doSomething()。
当我的 OSGi 容器中没有 SpecificSystem 时,什么都不会发生,这很好,因为系统引用不满足。当我将特定系统添加到我的容器时会出现问题。在这种情况下,在设置系统引用之前调用 bindFunction 会导致 bindFunction 内部出现 NullPointerException。
是否有任何 OSGi 方式来确保在执行 bindFunction 时设置了系统引用,以便我可以在 bindFunction 中安全地调用 system.doSomething()?