来自Servlet过滤器的@Reference

时间:2017-11-02 06:57:34

标签: osgi servlet-filters liferay-7

我正在编写一个Servlet过滤器,并想使用@Reference使用我的一个Liferay组件:

Promise

我得到了这个Java编译错误:

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;
}

我做错了什么? 这可能是不可能的吗?

2 个答案:

答案 0 :(得分:0)

正如Miroslav所说,@ Reference只能在OSGi组件中使用,而servlet过滤器不能用于。

Liferay 7中的解决方案是开发滤波器组件 执行此操作的程序在http://www.javasavvy.com/liferay-dxp-filter-tutorial/

中说明

答案 1 :(得分:0)

您可以创建一个简单的文件管理器:https://www.e-systems.tech/blog/-/blogs/filters-in-liferay-7http://www.javasavvy.com/liferay-dxp-filter-tutorial/

但是你也可以使用常规过滤器,只要你为它配置Liferay webapp - >如果您使用常规过滤器会产生两种后果:您将不在osgi应用程序中,并且每次更新捆绑包时都必须跟踪此情况。这就是为什么你不应该定期实施。 (只是补充了OP答案,并强调了避免初始轨道的强调理由)

相关问题