@Inject 来自 EJB 项目的 bean 给出 UnsatisfiedResolutionException
@Inject a bean from an EJB project gives UnsatisfiedResolutionException
我有两个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项目中,我有一个classBanana
,在war项目中,我有一个classMonkey
。
然后我尝试在 WAS 8.5 中 运行 这个,所以它将使用 JEE 6
但是,当我尝试在 Monkey
class 中 @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 时它工作正常。
我有两个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项目中,我有一个classBanana
,在war项目中,我有一个classMonkey
。
然后我尝试在 WAS 8.5 中 运行 这个,所以它将使用 JEE 6
但是,当我尝试在 Monkey
class 中 @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 时它工作正常。