2012-11-27 53 views
0

我似乎無法通過@EJB@Inject注入澤西島的任何東西。當我在FilterFactory中使用@EJB/@Inject時,該字段保持爲空,但注入到其他bean中工作正常。如何注入EJB到ResourceFilterFactory(澤西島)

I 可以使用@Context成功注入FIlterFacory。

我在這裏錯過了什麼?我的web.xml的

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

部分:

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

回答

1

這可能是新澤西州是如何創建的FilterFactory實例的問題。如果它不是由容器創建的,CDI將不起作用,@EJB也不會。按照Java EE6,由新建或反射創建的CDI規範對象不受管理,因此不會發生注入。新的CDI規範將解決這個問題。

+0

Thx爲您的答覆!什麼是最好的前進?改變爲春天?或者我可以使用InitialContext()。lookup()exmaple – busyBee

+1

上下文查找將工作:)但如果你的Bean有任何注入內部將不會解決。 – fatfredyy

+0

thx !,想要+1你,但我的水平是低的做到這一點:/ – busyBee