Injektion von HttpServletRequest
Ich bin mit ejb 3 und versuchen, zu @Inject HttpServletRequest, aber während der Bereitstellung von I auftreten, Ausnahme.
Code:
@Inject private HttpServletRequest httpRequest;
Ausnahme:
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [HttpServletRequest] with qualifiers [@Default] at injection point [[field] @Inject private com.kmware.ttk.highway.beans.session.UserSessionBean.httpRequest]
Was könnte ich tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Lebenszyklus des HttpServletRequest verwaltet die EJB/web-container, die nicht mit der CDI-container. Sie versuchen zu injizieren, führt es zu Problemen, da gibt es normalerweise viele Implementierungen des interface,und Ihre CDI-container nicht genügend Informationen, um eine Entscheidung über die Umsetzung zu injizieren. Auch wenn Sie erfolgreich injiziert eine Instanz, es würde nicht der gleichen Instanz verwaltet der EJB-container.
Zum Erwerb einer ordnungsgemäß verwalteten Instanz von der Anfrage, versuchen Sie stattdessen:
@Context
funktioniert nur innerhalb einer JAX-RS webservice-Klasse, und definitiv nicht arbeiten, innerhalb eines EJB-Klasse. Vielleicht die OP ist zufällig eigentlich mit JAX-RS als gut, obwohl das war nirgendwo in der Frage genannten. Also, diese Antwort sieht auf den ersten Blick völlig blind erraten und ein unwissender Schießen in der Dunkelheit, und nachdem alle ein lucky shot.Wenn Ihr abhängige ist eine JAX-RS (Restful) - Klasse dann beachten Sie die obige Antwort. Auf der anderen Seite, wenn Sie haben eine komplexere Anordnung von dependency injection, die Frage ist sicherlich gültig.
Diese Fähigkeit wurde Hinzugefügt, um die CDI-1.1-Spezifikation (JSR-346), die wiederum wurde Hinzugefügt, um die neue Java-EE-7-Spezifikation. In anderen Worten, die neueste Klasse von Java Enterprise Application Server wird in der Lage sein, dies zu behandeln.
In der Zwischenzeit, wenn Sie brauchen, um in der Lage sein, zu verwalten, einige request-scopes Abhängigkeiten, die im Begriff benötigen Zugriff auf die aktuellen HttpServletRequest Informationen, die Sie verwenden können, Ihren Ansatz und verwenden Sie die JBoss Solder tool. (Keine Panik, wenn die Website sieht veraltet, die Tatsache der Angelegenheit ist, die Arbeit wurde verschoben, um die offizielle CDI-1.1-spec-Umsetzung—d.h. die "Weld 2"—Sie sind also nicht in Lötzinn mehr. Aber es ist immer noch perfekt geeignet für CDI-1.0.)
Maven-Abhängigkeiten wären