【发布时间】:2016-08-12 15:07:19
【问题描述】:
我有两个 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 类型 [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