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
に追加します。