Ich habe eine statusfreie EJB, die auf meine Datenbank zugreift. Ich brauche diese Bean in einem JSF 2-Konverter, um ein Entity-Objekt vom String-Wert-Parameter zu retreive. Ich benutze JEE6 mit Glassfish V3.Injizieren Sie ein EJB in einen JSF-Konverter mit JEE6
@EJB
Annotation funktioniert nicht und ruft eine NPE ab, weil sie sich im faces-Kontext befindet und keinen Zugriff auf den EJB-Kontext hat.
Meine Frage ist: Ist es immer noch möglich, diese Bean mit einer @Resource
oder andere Annotation, oder eine JNDI-Lookup, oder brauche ich eine Abhilfe?
Lösung
einen JNDI-Lookup wie folgt tun:
try {
ic = new InitialContext();
myejb= (MyEJB) ic
.lookup("java:global/xxxx/MyEJB");
} catch (NamingException e) {
e.printStackTrace();
}
JNDI-Suche funktioniert nicht. Ich probierte @EJB (mappedName = "java: global/myProject/myEJB"), wobei der Wert derjenige ist, den glassfish in der Konsole als "portabler JNDI-Name" meines EJB ausgibt, während –
keine @ EJB-Annotation verwendet. Rufen Sie die Zielkomponente mit InitialContext ab. – Bozho
@Bozho: InitialContext hat funktioniert! :) Danke –