我正在尝试在 Wildfly 8.2 内运行的 EJB 上注入给定类型 (
Greeter
) 的对象。但是,部署总是失败并显示消息
Unsatisfied dependencies for type Greeter with qualifiers @Default
我尝试用
GreeterImpl
注释 @Default
和注入点,但这也不起作用。我在这里错过了什么吗?
我的
Greeter
界面:
public interface Greeter {
public void sayHi();
}
我的
GreeterImpl
类(唯一实现 Greeter
的类):
public class GreeterImpl implements Greeter {
private static final Logger LOGGER = LoggerFactory.getLogger(GreeterImpl.class);
@Override
public void sayHi() {
LOGGER.info("Hi!");
}
}
我的
ScheduledGreeter
EJB:
@Stateless
public class ScheduledGreeter {
@Inject
private Greeter greeter;
@Schedule(second = "*/15", minute = "*", hour = "*")
public void sayHi() {
greeter.sayHi();
}
}
我在这里错过了有关 CDI 的信息吗?我是否需要
beans.xml
处的 META-INF
才能正常工作?
编辑: 我将其部署为
war
到 Wildfly,如果这很重要的话。
在 Java EE 7 中,JAR/WAR 的默认扫描是
annotated
,这意味着如果您没有指定扫描模式的 beans.xml
,它将默认为基于注释的扫描。
你的类,
GreeterImpl
没有bean定义注释——没有特别的范围。您可以通过添加 beans.xml
或将 @Dependent
(或其他范围)添加到 GreeterImpl
来覆盖此设置