1

なので、CQ5に取り組んでいます。バンドルされたコンポーネントをサービスとしてデプロイして、(sling からの) .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;
    }

}

注釈に欠けているものはありますか? または私がすべきだったことは何ですか?

4

2 に答える 2

1

Sling 統合テスト サービスのソース コードには、[1] にいくつかのフィルターが含まれており、例として使用できます。David が言うように、おそらく @Service アノテーションが欠けているだけです。

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

于 2012-10-12T07:05:51.553 に答える
1

ここここのディスカッション スレッドを見ると、注釈を追加してsling.filter.scope @Property を設定し、@Service を宣言する必要があるようです。

このようなもの:

@Component(
    provide=Filter.class,
    immediate=true
    )
@Service(javax.servlet.Filter.class)
@Properties({
    @Property(name = "sling.filter.scope", value = "request") 
    })
于 2012-10-11T14:17:44.243 に答える