我似乎无法通过@EJB或@Inject向泽西岛注射任何东西。当我在FilterFactory中使用@EJB/@Inject时,字段仍然是空的,但是注入其他bean可以。
我可以使用@Context成功地为FIlterFacory注入。
我在这里错过了什么?
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;
}
}发布于 2012-11-27 12:30:34
这可能是泽西岛如何创建FilterFactory实例的问题。如果它不是由容器创建的,那么CDI就不能工作,@EJB也不能工作。根据Java规范,新创建或反射创建的对象不被管理,因此不会发生注入。新的CDI规范将解决这个问题。
https://stackoverflow.com/questions/13584168
复制相似问题