【问题标题】:Manually called Servlet-Filter - injected EJB always null (NullPointerException)手动调用 Servlet-Filter - 注入的 EJB 始终为空 (NullPointerException)
【发布时间】:2013-06-19 18:01:12
【问题描述】:

我确实遇到了 ServletFiltering 和 EJB 注入的问题。我已经配置了一个 ServletFilter 并将它包含在我的 web.xml 中。

过滤器类:

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 我添加了包含 FilterChain 和 Pattern 的 GodFilter,如 answere 中所建议的那样。那工作得很好。过滤器按定义调用。我的问题是:没有注入 EJB (rv)。对我来说总是空的。 我很确定我错过了任何(简单的)问题 - 但我没有找到错误。

有什么想法吗?

提前致谢

【问题讨论】:

    标签: servlets filter ejb servlet-filters web.xml


    【解决方案1】:

    所以我自己解决了这个问题:

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

    当然 new AuthRequestFilter() 不会注入 EJB - 我必须注入过滤器。

    【讨论】:

      猜你喜欢
      • 2017-09-12
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多