我想过滤的OSGi Apache的菲利克斯里面的码头HTTP服务器的网络资源。菲利克斯的OSGi的Servlet /资源筛选不会过滤
我已经注册了一个过滤器作为一个框架组件的OSGi:
@Component(property = { "osgi.http.whiteboard.filter.name=MyFilter",
"osgi.http.whiteboard.filter.regex=.*" },
scope = ServiceScope.PROTOTYPE)
public class MyFilter implements Filter {
...
@Override
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) {
...
// some logging
}
...
}
当我启动Felix框架,并通过浏览器访问的资源和servlet,该Filter#doFilter(...)
方法不会被调用。
的资源和servlet一直在使用org.osgi.service.http.HttpService#registerServlet(...)
和org.osgi.service.http.HttpService#registerResources(...)
注册。
我敢肯定,过滤器被初始化,因为Filter#init(...)
被调用:
这里该组件的费利克斯SCR信息:
Component Description:
Name: org.myCompany.MyFilter
Implementation Class: org.myCompany.MyFilter
Default State: enabled
Activation: delayed
Configuration Policy: optional
Activate Method: activate
Deactivate Method: deactivate
Modified Method: -
Configuration Pid: [org.myCompany.MyFilter]
Services:
javax.servlet.Filter
Service Scope: prototype
Component Description Properties:
osgi.http.whiteboard.filter.name = MyFilter
osgi.http.whiteboard.filter.regex = .*
Component Configuration:
ComponentId: 7
State: active
Component Configuration Properties:
component.id = 7
component.name = org.myCompany.MyFilter
osgi.http.whiteboard.filter.name = MyFilter
osgi.http.whiteboard.filter.regex = .*
- 内是否菲利克斯资源/ servlet的过滤工作,码头和OSGi?
- 我注册了过滤器吗?
在此期间,感谢您的关注和参与。
OSGi提供基于正则表达式过滤??这在Servlet规范中不受支持。 btw:(正则表达式)'。*'==(servlet)'/ *' –