我有两个 Maven 项目。
- 一种是封装类型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"
>
- 一种是打包类型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 type [org.food.Banana] is not found with the qualifiers
Qualifiers: [@javax.enterprise.inject.Default()]
当我将 Banana
设为 @Stateless
EJB,并为 Monkey
提供 @EJB Banana ejbBanana
时,它就可以工作了。
为什么这行不通?我应该做什么或尝试让它发挥作用?
可能与CDI: Why are there unsatisfied dependencies in the following setup?有关?
最佳答案
现在,我将结束这个问题。 看起来问题出在 JEE6 规范上。
- 在自由环境(JEE7)中运行它,效果很好。
- 在 Wildfly (JEE7) 中运行效果良好
- 在 JBoss (JEE6) 中运行失败
- 在 WAS 8.5 (JEE6) 中运行失败。
显然,@Inject 来自另一个 Ejb-jar 的 bean 会给容器带来问题。 当你使用@EJB时它工作得很好。
关于java - @Inject 来自 EJB 项目的 bean 给出 UnsatisfiedResolutionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921142/