Ich entwickle eine REST-Anwendung mit Glassfish 4.0.GlassFish 4 + JAX-RS Filter mit @EJB
In den Ressourcenklassen kann ich die Injektion zur Arbeit bringen, indem ich die Klasse @Stateless und die Injektion über @EJB mache (die injizierte Klasse ist eine zustandslose EJB).
Dieser Ansatz funktioniert jedoch nicht in einem JAX-RS-Filter. Ich kann keine Injektion bekommen, um überhaupt zu arbeiten.
Siehe Code unten:
@Provider
public class UpdateFilter implements ContainerRequestFilter {
@EJB
private MyBeanInterface doStuffBean;
@Override
public void filter(ContainerRequestContext requestContext) {
...
}
}
doStuffBean ist immer null.
Irgendwelche Vorschläge?
@Inject funktioniert nicht. Eine Ausnahme wird ausgelöst: ** UnbefriedigteDependenz-Ausnahme: Es war kein Objekt für die Injektion verfügbar ... **. – bafitor
Das ist, weil Ihre Klasse keine verwaltete Bean ist. Ich bin mir nicht sicher, ob Sie diesen Provider zu ManagedBean machen können, also werden Sie wahrscheinlich Ihren eigenen Producer erstellen müssen, der die EJB-Suche durchführt und dann können Sie überall injizieren (es gibt viele Artikel, die Ihnen zeigen, wie Sie dies tun) oder Sie kann nur die Suche in dieser Klasse tun. – ZeusSelerim