将SlingFilter添加到Apache Felix configMgr

时间:2016-11-03 22:01:52

标签: osgi aem sling

我正在编写一个简单的Sling过滤器,以便在AEM 5.6.1上运行。我已经使用过滤器使用配置属性了,我原本希望它出现在/ system / console / configMgr中,但事实并非如此。

@SlingFilter(generateComponent = true, generateService = true, order = -700, scope = SlingFilterScope.REQUEST)
public class SimpleFilter implements Filter {

    @Property(value = "property.defaultvalue")
    private static final String PROPERTY_KEY = "property.key";

    private String configuredValue;

    @Activate
    protected void activate(final ComponentContext componentContext) throws Exception {
        Map<String, String> config = (Map<String, String>) componentContext.getProperties();
        this.configuredValue = config.get(PROPERTY_KEY);
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println(this.configuredValue);
    }
}

我能够安装捆绑包,看看过滤器是否正常工作,可以在/ system / console / bundles中找到它,但它没有像我一样被添加到/ system / console / configMgr认为它来自@Property注释的存在。我错过了一步吗?

1 个答案:

答案 0 :(得分:1)

如果需要在配置管理器中显示配置,则需要指定metatype = truegenerateComponent。默认情况下,metatype为false。

@SlingFilter(generateComponent = true, 
    generateService = true, 
    metatype = true,
    order = -700, 
    scope = SlingFilterScope.REQUEST)

请参阅Apache Felix - SCR AnnotationsApache Felix Metatype Service以便更好地了解它。