如何创建一个Filter作为一个组件,我应该为注释添加什么?

时间:2012-10-11 01:54:33

标签: filter annotations cq5 sling

所以,我正在研究CQ5。我想部署捆绑的组件作为过滤和服务的服务。修改.inifinity.json输出(从吊索)到CQ5。

我能够构建和部署,并且组件和包都是活动的。但是,当一个页面或调用infinity.json时,我在日志中看不到输出。我怀疑是因为服务没有正确安装?或其他一些服务在运行我的服务之前返回电话?不确定。这是我的代码:

package com.my.test;
import javax.servlet.*;
import java.io.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import aQute.bnd.annotation.component.*;



@Component(
        provide=Filter.class,
        immediate=true
)
public class TestFilter implements Filter {

    private static final Logger LOGGER = LoggerFactory.getLogger(TestFilter.class);
    private FilterConfig filterConfig;

    public void init (FilterConfig filterConfig)  {
        LOGGER.info ("INIT .");
        this.setFilterConfig(filterConfig);
    }


    public void destroy() {
        LOGGER.info ("Destroy me NOW!!...");
    }


    public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain){
        try
        {
            LOGGER.info ("Within Simple Filter ... :) ");
            LOGGER.info  ("Filtering the Request ...");

          chain.doFilter (request, response);

          LOGGER.info ("Within Simple Filter ... ");
          LOGGER.info ("Filtering the Response ...");

        } catch (IOException io) {
            LOGGER.info ("IOException raised in SimpleFilter");
        } catch (ServletException se) {
            LOGGER.info  ("ServletException raised in SimpleFilter");
        }
    }

    public FilterConfig getFilterConfig() {
        return this.filterConfig;
    }

    public void setFilterConfig (FilterConfig filterConfig){
        this.filterConfig = filterConfig;
    }

}

我在注释中遗漏了什么吗?或者我应该做的任何事情?

2 个答案:

答案 0 :(得分:1)

查看讨论主题herehere,看起来您需要添加注释来设置sling.filter.scope @Property,并声明@Service。

这样的事情:

@Component(
    provide=Filter.class,
    immediate=true
    )
@Service(javax.servlet.Filter.class)
@Properties({
    @Property(name = "sling.filter.scope", value = "request") 
    })

答案 1 :(得分:1)

Sling集成测试服务源代码包含[1]处的一些过滤器,您可以将其用作示例。正如大卫所说,你可能只是错过了@Service注释。

http://svn.apache.org/repos/asf/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/filters/