Glassfish4 尝试在 Spring 上下文中注入 EJB

Glassfish4 tries to inject EJB in Spring context

我正在尝试将使用 EJB 和 Spring bean 组合的应用程序升级到 Glassfish 4。这在 Glassfish3 上运行良好。

当我尝试部署时出现这种类型的错误:

org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type SomethingLogic with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private com.my.application.server.service.SomethingServiceSession.somethingLogic

起初,我在尝试 @Inject 一个 Spring bean (EJBs/webservices/servlets) 时在非 spring bean 中得到了这些。将所有@Inject 更改为@Autowired 后,非spring 类 不再给出错误,但我开始在纯Spring bean 上出现相同的错误(所以@Inject Spring bean 到另一个 Spring bean 给出了错误。)

这让我相信 Glassfish 在遇到 @Inject 时会尝试寻找 EJB,无论它是否在 EJB 上下文中,也无论要注入的 bean 是 EJB 还是Spring豆.

是否是这种情况,如何避免这种情况?

通过将 bean-discovery-mode="none" 添加到我的各种 beans.xml 文件中,设法解决了我的问题。