java - 如何将 EJB 注入(inject) ResourceFilterFactory ( Jersey )

标签 java ejb jersey

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

可以使用FIlterFacory的@Context成功注入(inject)。

我在这里缺少什么?

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 实例的问题。如果它不是由容器创建的,CDI 将无法工作,@EJB 也将无法工作。根据 Java EE6 CDI 规范,由 new 或反射创建的对象不受管理,因此不会发生注入(inject)。新的 CDI 规范将解决这个问题。

关于java - 如何将 EJB 注入(inject) ResourceFilterFactory ( Jersey ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13584168/

相关文章:

java - 检查 String 数组元素是否为 null

java - 在单个 view.xhtml 的 JSF beans 之间传递参数

jersey - 在 Jersey 中使用 Jackson 和多个配置的 ObjectMapper

jakarta-ee - Jersey:在不使用 web.xml 文件的情况下禁用 OPTIONS 请求的自动 Wadl 生成?

java - 在 Java 中用多个连续逗号拆分字符串

java - 我如何获取日期时间戳作为 UTC

java - java 中的位图字体

java - 有状态 session Bean 与无状态 session Bean,实例变量困境

java - Java Enterprise 中的服务提供者接口(interface)

java - 在所有 JSON 生成端点上使用 @Produces ("application/json") 是一个好习惯吗?