我正在使用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始终为空。
有什么建议吗?
答案 0 :(得分:1)
我相信@EJB只能在Java EE托管类中工作,就像其他EJB和Servlet一样。
如果您正在使用CDI,则可以使用@Inject注释,但如果此类不是ManagedBean,则需要进行查找。
答案 1 :(得分:0)
尝试通过@ManjectBean替换@Stateless和@Inject替换@EJB来使用CDI。这适用于JAX-RS。
如果你需要EJB而不是注入,那么你可能需要保留双注释@Stateless @ManagedBean。