Einspritzen von EJB in servlet
Habe ich gegoogelt ohne Glück versucht zu verstehen, warum Weblogic 10.3.4, nicht injizieren EJB in annoted Feld in der servlet.
Ohr enthält ejb.jar Definition von DAO EJB und web.Krieg mit TestServlet.
PluginDataDAO.java
@Stateless
public class PluginDataDAO implements IPluginDataDAO {
}
IPluginDataDAO.java
@Local
public interface IPluginDataDAO {
}
TestServlet.java
public class TestServlet extends HttpServlet {
@EJB(mappedName = "PluginDataDAO")
private IPluginDataDAO pluginDataDAO;
}
web.xml
<web-app version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID">
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>cz.literak.blog.j2ee.TestServlet</servlet-class>
</servlet>
Servlet innerhalb web.Krieg, EJB-in ejb.jar. Ich habe versucht, die Beschriftung mit/ohne zugeordneten name-Attribut ohne Glück. Wenn ich versuchte, Sie zu aktualisieren web.xml 3.0, Bereitstellung fehlgeschlagen ist, die 3.0 wird nicht aufgezählt. Was ist falsch? Warum ist pluginDataDAO immer noch null? Danke.
- Warum sind Sie mit einem Produkt-spezifischen Namen? Ich Wette, eine einfache
@EJB private IPluginDataDAO pluginDataDAO;
arbeiten. - Nein, es kam nicht. Dies war die erste option, die ich getestet habe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem und löste es mit
@ManagedBean
:Folgende Kombination funktioniert:
Servlet
web.xml
Dachte ich, dass das hinzufügen von Referenzen zu web.xml ist nicht notwendig .. Was sind die Regeln, Wann diese hinzufügen?
web.xml
und alles ist OK jetzt. Aber warum sollten wir fügen Sie diese Zeilen?Als für die Servlet-3-Ausgabe; WebLogic 10.3.x ist ein Java EE 5-Implementierung, d.h. es unterstützt nur die Servlet 2.5.
Das Beispiel sollte aber funktionieren. Vielleicht versuchen Sie ein komplett neues Projekt mit nur den Servlet-und EJB-in es.
Auch versuchen, die gleiche code mit der neuesten WebLogic 12.1.2. Es kann heruntergeladen werden kostenlos auf der Oracle-Website.
Ich denke, es ist eine sehr gute Antwort in diesem link...Die Injektion einer stateless EJB in Servlet...
dieser Kerl Balus sagt Sie zu benutzen versuchen, DI im Konstruktor, das ist nicht korrekt...frühesten können Sie es eingestellt ist, die in init() ....Kopier einfach die Antwort, in der Hoffnung, jemand anderes würde nützlich finden