使用@EJB的GlassFish 4 + JAX-RS过滤器

时间:2013-07-30 15:19:05

标签: glassfish ejb jersey jax-rs

我正在使用Glassfish 4.0开发REST应用程序。

在资源类中,我可以通过创建@Stateless类并通过@EJB注入来注入工作(注入类是无状态EJB)。

但是这种方法在JAX-RS过滤器中不起作用。我根本无法注射。

见下面的代码:

@Provider
public class UpdateFilter implements ContainerRequestFilter {

    @EJB
    private MyBeanInterface doStuffBean;

    @Override
    public void filter(ContainerRequestContext requestContext) {

        ...
    }
}

doStuffBean始终为空。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我相信@EJB只能在Java EE托管类中工作,就像其他EJB和Servlet一样。

如果您正在使用CDI,则可以使用@Inject注释,但如果此类不是ManagedBean,则需要进行查找。

答案 1 :(得分:0)

尝试通过@ManjectBean替换@Stateless和@Inject替换@EJB来使用CDI。这适用于JAX-RS。

如果你需要EJB而不是注入,那么你可能需要保留双注释@Stateless @ManagedBean。