2012-10-11 15 views
1

所以,我正在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; 
    } 

} 

我是否缺少註釋中的任何內容?或我應該做的任何事情?

回答

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") 
    }) 
+0

謝謝..讓我試試。 – murvinlai

相關問題