G
Gelöschtes Mitglied 5909
Gast
Hallo,
ich habe ein Problem mit der Dependency Injection bei EJB 3.0 mit Glassfish.
Ich habe mir mal ein kleines Tutorial angeschaut wo das ganze sehr einfach funktioniert:
http://j2ee.netbeans.org/NetBeans_EJB3.html
Aus dem Grund verwende ich für dieses Projekt Ausnahmsweise mal Netbeans und genau das was in dem
Tutorial wie von selbst geht Klappt bei mir nicht:
Ich möchte ein EJB in ein Servlet Injecten und der spuckt mir dann folgendes aus:
com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref de.mas.ejb3.servlet.TestServlet/webShopBean@jndi: de.mas.ejb3.logic.WebShopRemote@null@de.mas.ejb3.logic.WebShopRemote@Session@null into class de.mas.ejb3.servlet.TestServlet
Wenn ich das ganze richtig verstanden habe findet er die Bean nicht im JNDI Context. Jetzt sind das ganze meine ersten J2EE gehversuche und ich weiß zwar was JNDI ist, aber nicht wie ich das ganze richtig einrichten kann. Das verwirrende ist dass im Netbeans Projekt keine ejb-jar.xml vorhanden ist, was aber auch bei EJB 3 nicht nötig is afaik.
Wo trage ich aber die JNDI namen bzw ids ein, damit Glassfish das ganze findet und auflösen kann?
-----------------
Dann habe ich noch eine weitere Frage. Wie man oben sieht baue ich einen kleinen WebShop (zu Demozwecken für Studienarbeit) und verwende für die Persistenz JPA, Logik EJB und Darstellung Servlet/JSP (vielleicht les ich mich noch in JSF ein, mal schaun). Die Kommunikation zwischen den Schichten ist mir klar (wenn das oben genannte Problem beseitigt ist sollte das ganze ja klappen), aber innerhalb der Geschäftslogik nicht. Das WebShopBean von oben soll für die Basisfunktionen zuständig sein: Login, alle Artikel anzeigen, Artikel nach Kategorie Anzeigen etc.
Wenn ein Benutzer aber etwas bestellen will, verwende ich das OrderBean, dass zusätzliche Funktionalität bereitstellt.
Wie leite ich die Funktionalität weiter? soll ich in den Servlets mehrere EJBs Injekten? In einer EJB eine neue Instanz einer anderen EJB zu erstellen ist denke ich schwachsinn, da es ja die Aufgabe des Containers bzw Application Servers ist. Wie gewährleiste ich dass ich in der gleichen Session bleibe?
Gibt es dafür eine einfache Variante oder muss ich mich auchnoch in JMS einarbeiten ?
Fragen über Fragen, ich hoffe mir kann sie jemand beantworten
besten Dank im vorraus.
ich habe ein Problem mit der Dependency Injection bei EJB 3.0 mit Glassfish.
Ich habe mir mal ein kleines Tutorial angeschaut wo das ganze sehr einfach funktioniert:
http://j2ee.netbeans.org/NetBeans_EJB3.html
Aus dem Grund verwende ich für dieses Projekt Ausnahmsweise mal Netbeans und genau das was in dem
Tutorial wie von selbst geht Klappt bei mir nicht:
Ich möchte ein EJB in ein Servlet Injecten und der spuckt mir dann folgendes aus:
com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref de.mas.ejb3.servlet.TestServlet/webShopBean@jndi: de.mas.ejb3.logic.WebShopRemote@null@de.mas.ejb3.logic.WebShopRemote@Session@null into class de.mas.ejb3.servlet.TestServlet
Wenn ich das ganze richtig verstanden habe findet er die Bean nicht im JNDI Context. Jetzt sind das ganze meine ersten J2EE gehversuche und ich weiß zwar was JNDI ist, aber nicht wie ich das ganze richtig einrichten kann. Das verwirrende ist dass im Netbeans Projekt keine ejb-jar.xml vorhanden ist, was aber auch bei EJB 3 nicht nötig is afaik.
Wo trage ich aber die JNDI namen bzw ids ein, damit Glassfish das ganze findet und auflösen kann?
-----------------
Dann habe ich noch eine weitere Frage. Wie man oben sieht baue ich einen kleinen WebShop (zu Demozwecken für Studienarbeit) und verwende für die Persistenz JPA, Logik EJB und Darstellung Servlet/JSP (vielleicht les ich mich noch in JSF ein, mal schaun). Die Kommunikation zwischen den Schichten ist mir klar (wenn das oben genannte Problem beseitigt ist sollte das ganze ja klappen), aber innerhalb der Geschäftslogik nicht. Das WebShopBean von oben soll für die Basisfunktionen zuständig sein: Login, alle Artikel anzeigen, Artikel nach Kategorie Anzeigen etc.
Wenn ein Benutzer aber etwas bestellen will, verwende ich das OrderBean, dass zusätzliche Funktionalität bereitstellt.
Wie leite ich die Funktionalität weiter? soll ich in den Servlets mehrere EJBs Injekten? In einer EJB eine neue Instanz einer anderen EJB zu erstellen ist denke ich schwachsinn, da es ja die Aufgabe des Containers bzw Application Servers ist. Wie gewährleiste ich dass ich in der gleichen Session bleibe?
Gibt es dafür eine einfache Variante oder muss ich mich auchnoch in JMS einarbeiten ?
Fragen über Fragen, ich hoffe mir kann sie jemand beantworten
besten Dank im vorraus.