[英]Obtaining actual parameter values in a Jersey ResourceFilterFactory
[英]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.