0

我确实遇到了 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() {
}
}

网页.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>

一切看起来都很棒,而且没有任何问题。我现在确实想让整个事情变得更加灵活,并来到这篇文章: 如何在不修改 web.xml的情况下向 servlet 添加过滤器 那工作得很好。过滤器按定义调用。我的问题是:没有注入 EJB (rv)。对我来说总是空的。我很确定我错过了任何(简单的)问题 - 但是我没有发现错误。

有任何想法吗?

提前致谢

4

1 回答 1

0

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

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

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

   ..
}

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

于 2013-06-24T13:57:10.360 回答