2013-06-22 4 views
0

У меня проблема с ServletFiltering и EJB Injection. Я настроил ServletFilter и включил его в свой web.xml.Вручную называется Servlet-Filter - впрыскивается EJB всегда null (NullPointerException)

Фильтр-класса:

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> 

Everthing отлично выглядит и работает без каких-либо проблем. Теперь я хотел сделать все это немного более гибким и пришел к этой статье: How to add filters to servlet without modifying web.xml Я добавил, что GodFilter, включая FilterChain и Pattern, как это предлагается в 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 - я должен вводить фильтр.