Zajmuję się tworzeniem aplikacji REST za pomocą Glassfish 4.0.Filtr GlassFish 4 + JAX-RS z @EJB
W klasach zasobów mogę wykonać wstrzyknięcie do pracy, wykonując klasę @Stateless i wstrzykując przez @EJB (wstrzyknięta klasa jest statusem EJB bez statu).
Jednak to podejście nie działa w filtrze JAX-RS. Nie mogę w ogóle dostać zastrzyku do pracy.
patrz kod poniżej:
@Provider
public class UpdateFilter implements ContainerRequestFilter {
@EJB
private MyBeanInterface doStuffBean;
@Override
public void filter(ContainerRequestContext requestContext) {
...
}
}
doStuffBean zawsze ma wartość null.
Wszelkie sugestie?
@Inject nie działa. Zgłaszany jest wyjątek: ** UnsatisfiedDependencyException: Nie było obiektu do wstrzyknięcia ... **. – bafitor
To dlatego, że twoja klasa nie jest zarządzanym komponentem bean. Nie jestem pewien, czy mogę zrobić tego Providera jako ManagedBean, więc prawdopodobnie będziesz musiał stworzyć własnego producenta, który wykonuje wyszukiwanie EJB, a następnie możesz wstrzyknąć gdziekolwiek (jest wiele artykułów pokazujących, jak to zrobić) lub ty można po prostu wykonać wyszukiwanie w tej klasie. – ZeusSelerim