Mam fasolę @Stateless
, która implementuje dwa interfejsy (zdalny i lokalny). Dodałem także anotację do uzyskiwania dostępu do komponentu bean w widoku bez interfejsu.WELD-001408 Niezadowolone zależności podczas wstrzykiwania EntityManager
@Stateless
@LocalBean
public class WeatherDataBean implements WeatherDataBeanRemote, WeatherDataBeanLocal {
@Inject
private EntityManager entityManager;
public WeatherDataBean() {
}
// ....attributes, getter & setter methods ....
}
używam @Inject
tego powodu podjętej from this example of JBoss AS7 quickstart:
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.
Teraz wcześniej użyłem:
@PersistenceContext(unitName="WeatherStationJPA")
private EntityManager entityManager;
W EJB i działa bez problemu. Ale z @Inject
adnotacji otrzymuję ten błąd:
WELD-001408 Unsatisfied dependencies for type [EntityManager] with qualifiers [@Default] at injection point [[field] @Inject private ejb.WeatherDataBean.entityManager]
Oto jak ja Resources klasy zdefiniowane:
public class Resources {
@SuppressWarnings("unused")
@PersistenceContext(unitName="WeatherStationJPA")
@Produces
private EntityManager entityManager;
@Produces
FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
}
Dlaczego jest to, że ten błąd, gdy próbuję wprowadzić kierownik jednostki?
EDIT: Na wniosek @LightGuard dodaję pakiety, które używam odwołać adnotacji:
WeatherDataBean posiada:
import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.inject.Inject;
Zasoby ma :
import javax.enterprise.inject.Produces; import javax.faces.context.FacesContext; import javax.inject.Singleton; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;
Wszystko wygląda poprawnie. Czy na pewno masz poprawne adnotacje (pakiety kontrolne)? Może również zależeć od tego, jak pakujesz rzeczy. – LightGuard
Proszę sprawdzić moją odpowiedź Dodałem, które pakiety używam dla tych adnotacji. Używam projektu EAR do spakowania projektu EJB, projektu EJBClient, projektu JPA i projektu JSF. –
Ah, okay, jeśli używasz rzeczy EAR trochę się zmienia. Będziesz musiał umieścić miejsce, w którym robisz zastrzyk, w której bibliotece znajdują się klasy i gdzie znajdują się pliki beans.xml. – LightGuard