我开发了一个使用 ejb3.1、jsf2.0 和 cdi 启用的 ear 应用程序。
我已将我的应用程序打包为 ear,其中包含定义会话 bean 的 ejb 模块、定义远程会话接口和 jpa 实体的 ejbremote jar,以及包含对 ejbremote jar 的依赖关系的 war 应用程序(用于远程接口查找和 jpa 实体)。
设想:
如果我在任何 cdi bean 中直接注入在 ejb jar 中定义的会话 bean,jboss 无法找到要注入的正确代理,并且throws a ClassCastException EjbManagerRemote field of my cdi bean cannot be cast to com.sun.proxy.$Proxy78
但是,对于 glassfish,这种情况非常有效。
为了规避 jboss 问题,我在战争中开发了一个会话 bean(类似于生产者:实际上打算这样做)文件,我在其中注入会话 bean,然后将此本地会话 bean 注入给我参考的 cdi bean到会话 bean。
我的问题是,为什么 jboss 无法注入远程会话 bean,而 glassfish 却没有问题?
我在 ejb 和 cdi bean 注入中缺少什么?
注意:我正在使用 @EJB 注释注入 bean。
谢谢