【问题标题】:OSGi profiles like Spring profilesOSGi 配置文件,如 Spring 配置文件
【发布时间】:2016-10-02 14:56:56
【问题描述】:

我有一个具有两个实现的 OSGi 服务。一种用于生产,一种用于测试。

有什么方法可以通过代码在不同的环境中切换它们?类似Spring profiles

【问题讨论】:

  • 您现在如何注册您的 OSGi 服务?以编程方式?

标签: osgi apache-karaf osgi-bundle karaf blueprint-osgi


【解决方案1】:

没有直接匹配的配置文件。您可以做的是发布具有不同服务属性的两个服务。在服务使用者上,您可以使用过滤器来决定使用哪个服务。

在声明式服务中,可以通过为您的组件提供配置在运行时更改此过滤器。在代码中,您将过滤器设置为默认值,如下面的“prod”。

@Reference(target="(profile=prod)")
MyService myService;

在您注入服务的组件的配置中,您可以添加一个属性来更改此过滤器:

myService.target=(profile=dev)

另一种更常见的方法是简单地为 dev 和 prod 部署不同的服务。在您的测试中,您部署一个虚拟服务,而在 prod 中您部署真正的服务。这种方法的优势在于它适用于 OSGi 中的任何 DI 框架。

【讨论】:

    猜你喜欢
    • 2013-02-12
    • 2020-05-07
    • 2016-02-05
    • 2021-04-18
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多