私は@Stateless
という2つのインターフェース(リモートとローカル)を実装しています。また、インタフェースなしのビューでBeanにアクセスするためのアノテーションを@LocalBean
と追加しました。 EJBでWELD-001408 EntityManagerをインジェクトするときに満たされていない依存関係
@PersistenceContext(unitName="WeatherStationJPA")
private EntityManager entityManager;
をし、それが何の問題もなく動作します。
We use the "resource producer" pattern, from CDI, to "alias" the old fashioned @PersistenceContext injection of the entity manager to a CDI style injection. This allows us to use a consistent injection style (@Inject) throughout the application.
は今、以前に私が使用している:私はfrom this example of JBoss AS7 quickstartを取られ、この理由のため@Inject
を使用
@Stateless
@LocalBean
public class WeatherDataBean implements WeatherDataBeanRemote, WeatherDataBeanLocal {
@Inject
private EntityManager entityManager;
public WeatherDataBean() {
}
// ....attributes, getter & setter methods ....
}
。しかし@Inject
注釈、私はこのエラーを取得すると:私はエンティティマネージャを注入しようとした場合、私はこのエラーを取得することですなぜ
public class Resources {
@SuppressWarnings("unused")
@PersistenceContext(unitName="WeatherStationJPA")
@Produces
private EntityManager entityManager;
@Produces
FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
}
:ここ
WELD-001408 Unsatisfied dependencies for type [EntityManager] with qualifiers [@Default] at injection point [[field] @Inject private ejb.WeatherDataBean.entityManager]
は、私が定義されたクラスのリソースを持っているかですか?
EDIT:@LightGuardからの要求に 私は注釈を参照するために使用していますパッケージ追加してい:
をWeatherDataBeanがありますがあり
import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.inject.Inject;
リソースを:
import javax.enterprise.inject.Produces; import javax.faces.context.FacesContext; import javax.inject.Singleton; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;
すべてが正しいように見えます。正しい注釈(チェックパッケージ)をお持ちですか?また、物を梱包する方法によっても異なる場合があります。 – LightGuard
私の答えを確認してくださいこれらの注釈に使用するパッケージを追加しました。 EJBプロジェクト、EJBClientプロジェクト、JPAプロジェクト、JSFプロジェクトをパッケージ化するためにEARプロジェクトを使用しています。 –
ああ、あなたがEARを使用しているのであれば、ちょっと変わってしまいます。インジェクションを行う場所、クラスが入っているライブラリ、beans.xmlファイルがある場所を配置する必要があります。 – LightGuard