简体   繁体   English

如何将EJB注入ResourceFilterFactory(Jersey)

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

I cannot seem to get anything injected via @EJB or @Inject into Jersey. 我似乎无法通过@EJB@Inject将任何东西注入到Jersey中。 When I use @EJB/@Inject in the FilterFactory the field remains null, but injecting into other beans works fine. 当我在FilterFactory中使用@ EJB / @ Inject时,该字段保持为空,但注入其他bean效果很好。

I can successfully inject using @Context for the FIlterFacory. 可以为FIlterFacory使用@Context成功注入。

What am I missing here? 我在这里想念什么?

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;
    }

Part of my web.xml: 我的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>

My filter 我的过滤器

@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;
    }  
}

This might be the issue of how Jersey creates an instance of FilterFactory . 这可能是Jersey如何创建FilterFactory实例的FilterFactory If it is not created by container, CDI will not work and @EJB will not also. 如果不是由容器创建的,则CDI将不起作用,@ @EJB也将不起作用。 As per Java EE6 CDI spec objects created by new or by reflection are not managed and thus no injection occures. 按照Java EE6 CDI规范,由新对象或反射对象创建的对象不会得到管理,因此不会发生注入。 New CDI spec will address this issue. 新的CDI规范将解决此问题。

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

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