2017-07-25 52 views
0

我想过滤的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?
  • 我注册了过滤器吗?

在此期间,感谢您的关注和参与。

+0

OSGi提供基于正则表达式过滤??这在Servlet规范中不受支持。 btw:(正则表达式)'。*'==(servlet)'/ *' –

回答

0

的R6规范不在HttpService的等白板服务之间的相互作用清楚。事实上,在RFC 0223的更新说:

3.1白板服务和HTTP服务(错误2872)

如果一个Http白板实现也实现HTTP服务,该 白板规范没有指定是否Http服务的Http上下文 表示为ServletContextHelper服务。 有没有办法在HTTP服务的一个Http 上下文中注册一个白板服务。例如,为 添加一个servlet过滤器,所有由Http服务管理的servlet都是不可能的。

Felix实现不共享HttpContext和ServletContextHelper:您必须使用Http白板注册您的servlet才能使用您的过滤器。

+0

谢谢,过滤器在注册到Http白板后工作。 – albi9

相关问题