我正在学习 CDI 和 EJB。查看 WELD 对 CDI 的解释(http://docs.jboss.org/weld/reference/latest/en-US/html/beanscdi.html),它指出
会话 bean 的不受限制的 bean 类型集包含 bean 的所有本地接口及其超接口。如果会话 bean 具有 bean 类本地视图,则不受限制的 bean 类型集包含 bean 类和所有超类。此外,java.lang.Object 是每个会话 bean 的 bean 类型。但是远程接口不包括在 bean 类型集中。
我正在尝试测试这个特定的部分
不受限制的 bean 类型集包含 bean 类和所有超类
所以我创建了两个 EJB:ReferencedEJB,它扩展了 DummyParent 和 MainEJB,它引用了 EJB
DummyParent.java
package com.etm.ejbtest;
public abstract class DummyParent {
public DummyParent() {
}
public void sayHi() {
System.out.println("Hi!");
}
}
引用EJB.java
package com.etm.ejbtest;
import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Singleton
@Startup
public class ReferencedEJB extends DummyParent {
public ReferencedEJB() {
}
@PostConstruct
protected void init() {
System.out.println("init of ReferencedEJB");
}
}
MainEJB.java
package com.etm.ejbtest;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Singleton
@Startup
public class MainEJB {
@EJB
private DummyParent dummyParent;
public MainEJB() {
}
@PostConstruct
protected void init() {
System.out.println("init of MainEJB");
dummyParent.sayHi();
}
}
我在 JBoss 7 上运行它,但我收到一条错误消息
找不到用于绑定 com.etm.ejbtest.MainEJB/dummyParent 的接口类型为“com.etm.ejbtest.DummyParent”的 EJB
知道为什么它不起作用吗?