问题标签 [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 回答
541 浏览

java - 在 OSGi DS 中,如何在引用服务的属性更新时收到通知?

我有一个 OSGi 服务,它通过注入它们的声明性服务引用其他服务。我希望在引用服务的属性更新时收到通知。我不希望每次引用服务中的配置更改时我的主要服务都停止,因此我将策略设置为“动态”。

0 投票
3 回答
4664 浏览

java - 如何使用新的 OSGi 声明式服务注解?

根据RFC 0172 声明性服务注释(第 187 页)中描述的提议?

0 投票
2 回答
984 浏览

java - 以编程方式使用 OSGi 中的组件

在我的应用程序中,单独使用服务是毫无用处的。您总是需要一些外部配置信息才能使服务可用。

与 ConfigurationAdmin 结合使用的组件很有意义,因为从那时起,对于我创建的每个配置,都会创建一个组件实例。这非常适合我的用例。

现在,问题出现了,如果我想以编程方式使用来自其他包的组件怎么办?这有意义吗?

我知道我可以再次将组件导出为服务,并从其他 bean 中使用它,但是假设我有一个 servlet,用户可以在其中创建配置,并且对于每个配置的实例都有一个操作列表;当他单击动作时,我需要找到适当的组件,并对其执行动作。

在 OSGi 之上实现此功能的最佳方式是什么?

0 投票
1 回答
1260 浏览

java - 多个 OSGi 服务实例和 DS 绑定

我认为我在一起使用 OSGi 服务 + DS 时走在正确的轨道上,但是,我真的很想滥用它。要么,要么它只是纯粹的真棒。(两者仍然是可能的)。

所以让我们想象一下下面的应用程序:它是一个房屋数据库。我有两个界面,House 和 Window。假设我为每个可用至少有一个实现,配置为......好吧,作为需要配置来实例化的组件,并且为了创建新实例,我只需将此配置提供给正确的 pid。(它既不是工厂组件,也不是服务工厂 - 官方名称是什么?这是Neil写的一篇很棒的帖子)。

到目前为止一切顺利,这就像一个魅力。

房子就是这样,房子。有自己的地址,每个人都不一样,很容易通过他们的街道属性来识别。但是,windows 实例可以在房屋之间共享;它们的配置基本上是宽度和高度。

现在,这些组件还可以在 0..n 基数配置中相互绑定(即使您不想住在没有窗户的房子里)。所以每个房子都有一个窗户列表,对于每种窗户类型,我们知道哪个房子有它(多对多关系)。

我的问题是,假设两所房子共享相同的三个窗户。我该如何描述呢?我觉得基于属性的过滤不够表达。我也觉得这可能不是让框架实例化我的对象的正确方法,但它非常方便。

想法?我是在滥用还是按预期使用它?

(我也可以使用 DS 来完成一半的工作:将房屋列表绑定到它所引用的 Window 实例引用,反之亦然,然后组件实例可以在目标实例上调用 registerWhatever() 函数- 但是我仍然需要以某种方式描述至少这一半。)

0 投票
2 回答
259 浏览

osgi - 引用非声明式服务的 OSGi 声明式服务

我有一个使用激活器方法声明服务“旧方式”的系统。

现在我正在使用声明式服务编写一个新包。是否可以在我的新捆绑包中引用未使用声明式服务技术发布的服务?

0 投票
1 回答
5020 浏览

java - 您如何在分离服务组件的同时正确处理 OSGi 中的日志记录?

我正在使用 OSGi 和声明式服务 (DS),目前正在考虑如何正确处理日志记录。由于无论如何我都在使用 DS,因此使用 OSGi 服务纲要指定的 LogService 作为强制性服务参考似乎很自然。我在ekkes 角nogunners 的博客上阅读了很多内容,但我仍然不清楚:

如何正确区分不同的服务组件(或使用分解组件时的不同服务组件实例)?

如果我查看使用 Logback 的 LogListener 的 nogunners 实现,他使用来自 bundlecontext 的 Bundle-Id 来区分它们。到目前为止还好。但是我将如何区分服务组件?LogService 对象自然包含对 BundleContext 的引用,但是(查看 LogService 接口)必须由用户(实际记录某些内容的人)自己提供 ServiceReference 吗?这对我来说似乎很脆弱。为什么框架不能像它提供 BundleContext 一样提供这个?

当我在做的时候,为什么 OSGi 规范使用详细logger.log(LogService.LOG_INFO,...)而不是准标准logger.info(...), logger.warn(..)等?有什么具体原因吗?

0 投票
2 回答
2684 浏览

osgi - OSGi 组件模型中的捆绑内和捆绑间相互依赖关系

在我当前的应用程序中,我在几个地方遇到了这种模式:我在一个包中有两个服务接口,它们执行不同但相关的工作。

并希望让单例组件实现两者,但发现每个组件都需要对另一个组件的引用:

三个 OSGi 组件模型(DS、Blueprint 和 iPOJO)中的哪一个允许这样做: 1) 何时Service1ImplService2Impl在同一个包中;2)当它们在不同的包中时?

0 投票
2 回答
456 浏览

osgi - Bnd @Attribute 注解有什么用?

查看 bndlib-1.50.0 中的包中的注释时, http ://www.aqute.biz/Blog/20091020或http://www.aqute.biz/Bnd/Components :aQute.bnd.annotation.component中没有列出一个。它是干什么用的?@Attribute

0 投票
2 回答
543 浏览

eclipse - “绑定”和“激活”有什么区别

我开始在 eclipse 中使用 OSGI。在声明式服务下,我发现一旦服务被激活,就会执行两种方法。即激活和绑定..这两者有什么区别?

如果我想在我的服务启动时执行某些操作,我应该把它放在Bind方法还是Activate方法中?

0 投票
1 回答
1015 浏览

osgi - 以编程方式添加声明性服务

是否可以使用某种 api 添加声明性服务?

一点背景:

我有一个基于动态脚本的服务器应用程序(可以随时添加、编辑或删除它们)。这些脚本依赖于 OSGi 服务,并且可能相互依赖。每当编辑脚本时,脚本就会被编译为 javascript,并检测其依赖项。

那时,我想(重新)将其注册为声明性服务,因此当它的依赖项来来去去时,它将被激活/停用。

  • 这甚至可能吗?还是我缺少一些重要的东西?
  • 如果 OSGi 标准无法实现,是否有针对 Felix 或 Equinox 的特定解决方案?
  • 你能在其他框架中做到这一点,比如 iPojo 或 blueprint 吗?