gpt4 book ai didi

java - 如何摆脱 OSGi 包的相应配置中不存在的属性 ("service.pid"等)?

转载 作者:行者123 更新时间:2023-12-01 21:14:30 25 4
gpt4 key购买 nike

我的类(class)类似于以下内容:

@Component(configurationPid = "foo.bar", configurationPolicy = ConfigurationPolicy.REQUIRE)
public class MyClass {

@Activate
public void activate(Map<String, Object> properties) throws Exception {
for (String property : properties.keySet()) {
if (!isValidProperty(property)) {
throw new IllegalArgumentException("Unknown property: " + property);
}
...
}
}

}

properties 映射必须包含来自相应配置源(例如用户提供的文件)的属性。确实如此,但它还包含一些并不真正存在的属性(service.pidfelix.fileinstall.dir 等),所以我的程序被破坏了。我想以某种方式摆脱它们。
我尝试使用 ConfigurationAdmin.getConfiguration.getProperties 以及蓝图 cm-properties 但这给出了相同的效果。
我无法对要排除的属性的名称进行硬编码,因为我不知道它们是什么。
有没有办法告诉 OSGi 运行时不要将它们放在我的 map 中?
我使用 ServiceMix 的 OSGi 支持(本质上是 Karaf、Felix 和 Aries)来完成此操作。

最佳答案

忽略您不喜欢/不理解的属性。该系统的设计使得进行配置的一方可以添加任何属性,并且该属性将传递给您的组件,从而成为组件服务上的服务属性。删除组件开发人员不理解的属性过于严格。您将消除部署过程中某人以对其他人有意义的方式装饰您的服务的能力。

关于java - 如何摆脱 OSGi 包的相应配置中不存在的属性 ("service.pid"等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40484319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com