【问题标题】:@Inject a bean from an EJB project gives UnsatisfiedResolutionException@Inject 来自 EJB 项目的 bean 给出 UnsatisfiedResolutionException
【发布时间】:2016-08-12 15:07:19
【问题描述】:

我有两个 maven 项目。

  1. 一种是封装类型ejb,在/META-INF中包含一个beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"
>
  1. 一种是包装类型war,在/WEB-INF中包含一个beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"
>
</beans>

然后将它们包装到一个耳朵中。

在我的 ejb 项目中,我有一个类 Banana,而在 war 项目中,我有一个类 Monkey
然后我尝试在 WAS 8.5 中运行它,所以它将使用 JEE 6
但是,当我在 Monkey 类中尝试 @Inject Banana cdiBanana 时,它失败了。
它给出了消息

javax.enterprise.inject.UnsatisfiedResolutionException:未找到带有限定符的 API 类型 [org.food.Banana]
限定符:[@javax.enterprise.inject.Default()]

当我将Banana 设置为@Stateless EJB 并将Monkey 设置为@EJB Banana ejbBanana 时,它可以工作。

为什么这不起作用?我应该怎么做或尝试让它发挥作用?

可能与CDI: Why are there unsatisfied dependencies in the following setup?有关?

【问题讨论】:

  • @Stateless@Depedent标记香蕉
  • 为什么是@Dependent?那有必要吗?为什么? (对我来说似乎没有必要)
  • 您使用的是什么容器?您的 ejb-jar 是否部署到 WAR 文件的 WEB-INF/lib?每个包的 beans.xml 是什么样的?请使用此信息更新您的问题。
  • 您是如何在您的 EJB 模块 beans.xml 中设置 bean-discovery-mode 的?
  • - 现在正在度假,所以当我再次获得代码时会更新它...

标签: java jakarta-ee dependency-injection cdi websphere-8


【解决方案1】:

现在,我将结束这个问题。 看起来问题出在 JEE6 规范上。

  • 在 liberty (JEE7) 中运行它可以正常工作。
  • 在 Wildfly (JEE7) 中运行正常
  • 在 JBoss (JEE6) 中运行失败
  • 在 WAS 8.5 (JEE6) 中运行失败。

显然,@Inject 来自另一个 Ejb-jar 的 bean 会给容器带来问题。 当您使用@EJB 时,它可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 2012-02-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多