如何解决将sling:OsgiConfig读入@ObjectClassDefinition
我们有一个OSGI服务(使用R7 DS注释)。我们将OCD用作服务中的内部类。
此外,我们希望组件从JCR中的预定义sling:osgiconfig节点读取属性。
已根据需要定义了配置策略。
当组件/服务加载时,它进入“无配置”状态。
需要帮助来从sling:osgiCongig节点读取这些配置。
解决方法
sling:OsgiConfig
配置应使用应该使用OCD配置的服务实现类名称进行定义,而不应使用OCD名称进行定义。
OCD基本上是可以具有多种实现的接口。因此,必须使用服务实现类名称定义sling:OsgiConfig节点。例如,假设您有一个SampleServiceImpl.class
定义了一个SampleOCDConfig.class
,如下所示:
@Component(service = SampleService.class)
@Designate(ocd = SampleServiceImpl.Config.class)
public class SampleServiceImpl implements SampleService {
public static final String DEFAULT_CUSTOM_CONFIG = "default configuration value";
@ObjectClassDefinition(name = "Sample OCD Configuration")
@interface Config {
@AttributeDefinition(name = "The custom config",defaultValue = DEFAULT_CUSTOM_CONFIG)
String custom_config() default DEFAULT_CUSTOM_CONFIG;
}
...
现在,当您为上述设置定义配置时,必须按如下所示进行定义:
/apps/your_project/config/your.sample.service.package.path.SampleServiceImpl.xml
具有以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="sling:OsgiConfig"
custom.config="default configuration value" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。