CDI定义失败:WELD-001476:拦截器[类]必须是@Dependent

时间:2016-11-17 02:37:46

标签: cdi weld

我正在尝试APM MoSKito并尝试部署将映射到[context]/mui/*的嵌入式Web UI,其中将显示MoSKito界面。

问题是我在部署app时遇到以下错误:

  

CDI定义失败:WELD-001476:拦截器[类   net.anotheria.moskito.integration.cdi.CountInterceptor拦截   @Count]必须是@Dependent

拦截器在beans.xml

中声明
<interceptors>
    <class>net.anotheria.moskito.integration.cdi.CountInterceptor</class>
    <class>net.anotheria.moskito.integration.cdi.CallInterceptor</class>
</interceptors>   

但由于我无法修改此APM的Maven存储库,我无法真正使这些类使用@Dependent注释,所以我真的不明白这个问题,我真的会对救命。谢谢!

1 个答案:

答案 0 :(得分:1)

问题是版本低于2.7.0的MoSKito在其拦截器上有@Singleton注释。这不会通过Weld验证(拦截器必须是@Dependent bean)并导致描述的异常。

因此,解决方案是将框架升级到2.7.0 +。因此,需要更新beans.xml,因为拦截器的包名也会发生变化。