我正在编写一个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;
}
我做错了什么? 这可能是不可能的吗?
答案 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-7和http://www.javasavvy.com/liferay-dxp-filter-tutorial/
但是你也可以使用常规过滤器,只要你为它配置Liferay webapp - >如果您使用常规过滤器会产生两种后果:您将不在osgi应用程序中,并且每次更新捆绑包时都必须跟踪此情况。这就是为什么你不应该定期实施。 (只是补充了OP答案,并强调了避免初始轨道的强调理由)