У меня есть bean-компонент @Stateless
, который реализует два интерфейса (удаленный и локальный ). Я также добавил аннотацию @LocalBean
для доступа к компоненту без представления интерфейса -.
@Stateless
@LocalBean
public class WeatherDataBean implements WeatherDataBeanRemote, WeatherDataBeanLocal {
@Inject
private EntityManager entityManager;
public WeatherDataBean () {
}
//....attributes, getter & setter methods....
}
По этой причине я использую @Inject
, взятый из этого примера быстрого запуска JBoss AS7 :
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.
. Раньше я использовал:
@PersistenceContext(unitName="WeatherStationJPA")
private EntityManager entityManager;
В EJB все работает без проблем. Но с аннотацией @Inject
я получаю эту ошибку:
WELD-001408 Unsatisfied dependencies for type [EntityManager] with qualifiers [@Default] at injection point [[field] @Inject private ejb.WeatherDataBean.entityManager]
Вот как у меня определены ресурсы класса:
public class Resources {
@SuppressWarnings("unused")
@PersistenceContext(unitName="WeatherStationJPA")
@Produces
private EntityManager entityManager;
@Produces
FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
}
Почему я получаю эту ошибку, если пытаюсь внедрить диспетчер сущностей?
РЕДАКТИРОВАТЬ: По запросу от @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;