java - OSGI 同一服务的两个实例

标签 java eclipse service osgi equinox

我确实有一个服务“A”,该服务将从其他 11 个组件中使用。如果我通过 osgi 控制台检查所有可用服务,我确实只看到一个实例和所有 11 个组件都在使用该服务。

但由于某种奇怪的原因,我不明白,其中两个组件不使用相同的服务实例。如果我调试,我会看到两个不同的 ID。怎么会发生这种事呢? 我没有做任何提到的here .

我通过在 Eclipse 中设置“立即激活此组件”解决了该问题。但正如我红色here ,这不是此复选框的目的。所以也许有人可以解释一下这是如何发生的以及为什么启用此功能可以修复它。

最佳答案

当您使用声明式服务时,DS 运行时可能在某些情况下重新实例化您的服务,通常是因为它所依赖的某些服务已出现/更改/被删除,并且引用是静态的。检查使用服务 A 的所有站点是否是静态的,或者是具有绑定(bind)/取消绑定(bind)方法的动态站点。

关于java - OSGI 同一服务的两个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22346539/

相关文章:

java - 使用 spring boot 和 mongodb 检索具有完整和不完整配置文件的用户数量的最佳方法是什么?

java - 为什么 java 不在 if else 语句内的嵌套 for 循环中打印并显示为已终止?

java - 使用 Maven 在 Eclipse 中为 JUnit 5 配置类路径

c++ - Windows 服务启动失败 "Path ' .' not found"

java - Android - 检查 Runnable 是否正在运行

java - 如何仅使用数组和循环(没有其他方法)来删除 null?

java - Spring Security不拦截登录调用

java - API 文档 Swagger 中遗漏添加了 ExclusiveMaximum 注释

java - 或在 if 语句中使用 int 操作数

vb.net - WCF 服务传递 TimeZoneInfo