Glassfish 玻璃鱼4号&x2B;带有@EJB的JAX-RS过滤器
我正在使用Glassfish 4.0开发一个REST应用程序 在资源类中,我可以通过使类@Stateless和通过@EJB进行注入(注入的类是无状态EJB)来实现注入 然而,这种方法在JAX-RS过滤器中不起作用。我根本无法注射到工作中去 见下面的代码:Glassfish 玻璃鱼4号&x2B;带有@EJB的JAX-RS过滤器,glassfish,ejb,jersey,jax-rs,Glassfish,Ejb,Jersey,Jax Rs,我正在使用Glassfish 4.0开发一个REST应用程序 在资源类中,我可以通过使类@Stateless和通过@EJB进行注入(注入的类是无状态EJB)来实现注入 然而,这种方法在JAX-RS过滤器中不起作用。我根本无法注射到工作中去 见下面的代码: @Provider public class UpdateFilter implements ContainerRequestFilter { @EJB private MyBeanInterface doStuffBean;
@Provider
public class UpdateFilter implements ContainerRequestFilter {
@EJB
private MyBeanInterface doStuffBean;
@Override
public void filter(ContainerRequestContext requestContext) {
...
}
}
doStuffBean始终为空。
有什么建议吗?我相信@EJB只适用于javaee管理的类,就像其他EJB和servlet一样
如果您使用的是CDI,则可以使用@Inject注释,但如果该类不是ManagedBean,则需要进行查找。尝试使用CDI,将@Stateless替换为@ManagedBean,将@EJB替换为@Inject。这在JAX-RS中对我很有效
如果您需要EJB来完成注入以外的其他工作,则可以保留双注释@Stateless@ManagedBean。我尝试了这两种解决方案,但都不起作用。我得到了一个不满意的异常:没有可供注入的对象。。有什么想法吗?我以前在GF3上没见过这个,所以可能是GF4出了问题。表示它在v4.0.1中已修复-这是您正在使用的版本吗?如果没有,您可以尝试一些解决方案建议。您是否尝试删除@Stateless或是否需要它?@Inject不起作用。引发了一个异常:UnsatifiedPendencyException:没有可用于注入的对象……这是因为您的类不是托管bean。我不确定是否可以将此提供程序设置为ManagedBean,因此您可能必须创建自己的生产者来执行EJB查找,然后您可以在任何地方进行注入(有很多文章介绍了如何执行此操作),或者您可以在这个类中执行查找。