2013-06-22 21 views
0

我確實有ServletFiltering和EJB注入的問題。我配置了一個ServletFilter並將其包含到我的web.xml中。手動所謂的Servlet過濾器 - 注入EJB總是空(空指針異常)

過濾級:

package at.dot.web.rest.common.utils; 
public class AuthRequestFilter implements Filter { 

@EJB 
private RequestValidator rv; 

@Override 
public void doFilter(ServletRequest servletRequest, 
     ServletResponse servletResponse, FilterChain filterChain) 
     throws IOException, ServletException { 

    AuthRequestWrapper wr = new AuthRequestWrapper((HttpServletRequest) servletRequest); 
    if (rv.isRequestAccepted(wr)) { 
    filterChain.doFilter(wr, servletResponse); 
    } 

@Override 
public void init(FilterConfig filterConfig) throws ServletException { 
} 

@Override 
public void destroy() { 
} 
} 

的web.xml:

<filter> 
    <filter-name>AuthRequestFilter</filter-name> 
    <filter-class>at.dot.web.rest.common.utils.AuthRequestFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>AuthRequestFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

寄託都看起來不錯,沒有任何問題的作品。我現在也想使整個事情有點更加靈活,來到這篇文章: How to add filters to servlet without modifying web.xml 我補充說GodFilter包括FilterChain和模式作爲的answere建議。這工作得很好。按定義調用過濾器。我的問題是:EJB(rv)沒有被注入。對我來說這總是空的。 我很確定我錯過了任何(簡單)問題 - 但我仍然沒有發現錯誤。

任何想法?

在此先感謝

回答

0

所以我自己解決了該問題:

@Stateless 
@LocalBean 
@RequestScoped 
public class AuthRequestFilter implements Filter { .. } 

@RequestScoped 
public class MasterFilter implements Filter { 
    @EJB(beanName = "AuthRequestFilter") 
    private AuthRequestFilter arf; 

    .. 
} 

當然新AuthRequestFilter()不注入EJB - 我必須注入過濾器。