gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:01:27 24 4
gpt4 key购买 nike

我似乎无法通过 @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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com