2017-11-02 20 views
0

필터 :@Reference 내가 서블릿 필터를 쓰고 있어요 및 @Reference 사용하여 내을 Liferay 구성 요소 중 하나를 사용하고 싶습니다

package my.filter; 

import my.Compo; 
import org.osgi.service.component.annotations.Reference; 

public class MyFilter implements Filter { 

    @Override 
    public void doFilter(...) { 
     compo.doTheThing(); 
    } 

    @Reference(unbind = "-") 
    protected my.Compo compo; 
} 

을 나는이 자바 컴파일 오류 얻을 :

annotation type not applicable to this kind of declaration 

무엇 내가 틀렸어?
이것을 달성하는 것이 불가능할 수도 있습니까?

+0

1. \ @Reference는 osgi \ @Components 외부에서 사용할 수 없습니다. 2.이 종속성을 정의 했습니까 ogr.osgi : org.osgi.service.component.annotations : 1.3.0 –

답변

0

Miroslav가 인용 한 것처럼 @Reference는 OSGi 구성 요소에서만 사용할 수 있으며 서블릿 필터는 하나가 아닙니다.

Liferay 7의 솔루션은 필터 구성 요소를 개발하는 것입니다. 거기> - https://www.e-systems.tech/blog/-/blogs/filters-in-liferay-7

http://www.javasavvy.com/liferay-dxp-filter-tutorial/ 그러나 당신은 또한 당신이 그것을 위해 당신을 Liferay 웹 애플리케이션을 구성, 정기적으로 필터를 사용할 수 있습니다
이렇게하는 절차는 같은 간단한 파일러를 할 수 http://www.javasavvy.com/liferay-dxp-filter-tutorial/

0

에 설명 비록 당신이 osgi 응용 프로그램을 벗어나고 번들을 업데이트 할 때마다 이것을 추적해야 할 것입니다. 그래서 정기적으로 구현하지 않아야합니다. (초기 답변을 피하기 위해 밑줄 친 이유로 OP 답을 보완)