5

我正在使用 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 始终为空。

有什么建议么?

4

2 回答 2

1

我相信@EJB 仅适用于 Java EE 托管类,如其他 EJB 和 Servlet。

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

于 2013-07-30T17:54:54.747 回答
0

尝试通过用@ManagedBean 替换@Stateless 和用@Inject 替换@EJB 来使用CDI。这在 JAX-RS 中对我有用。

如果您需要 EJB 来处理除注入之外的其他事情,那么保留双注解 @Stateless @ManagedBean 可能对您有用。

于 2013-07-30T20:42:10.390 回答