繁体   English   中英

如何将EJB注入ResourceFilterFactory(Jersey)

[英]How to inject EJB into ResourceFilterFactory (Jersey)

我似乎无法通过@EJB@Inject将任何东西注入到Jersey中。 当我在FilterFactory中使用@ EJB / @ Inject时,该字段保持为空,但注入其他bean效果很好。

可以为FIlterFacory使用@Context成功注入。

我在这里想念什么?

public class FilterFactory implements ResourceFilterFactory{

    @EJB
    private MyFilter myFilter ;

    @Override 
    public List<ResourceFilter> create(AbstractMethod am) {
        List<ResourceFilter> filters = new ArrayList<ResourceFilter>();
        filters.add(myFilter);
        return filters;
    }

我的web.xml的一部分:

<init-param>
     <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
     <param-value>com.jea.openxchange.rest.filter.FilterFactory</param-value>
</init-param>

我的过滤器

@Stateless
public class MyFilter implements ResourceFilter,ContainerResponseFilter  {

    @Override
    public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
        //todo
        return response;
    }

    @Override
    public ContainerRequestFilter getRequestFilter() {
        return null;
    }

    @Override
    public ContainerResponseFilter getResponseFilter() {
        return this;
    }  
}

这可能是Jersey如何创建FilterFactory实例的FilterFactory 如果不是由容器创建的,则CDI将不起作用,@ @EJB也将不起作用。 按照Java EE6 CDI规范,由新对象或反射对象创建的对象不会得到管理,因此不会发生注入。 新的CDI规范将解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM