2010-08-01 15 views
5

Ich habe Probleme mit der Bereitstellung Lift-Anwendung mit verwendet Enterprise Java Beans. Es gibt ein einfaches Beispiel:Aufzug mit Enterprise Java Beans

@Stateless 
class TestEJB { 
def a = "hello" 
} 

object TestApi extends XMLApiHelper{ 
@EJB 
private var bean:TestEJB = _ 
def createTag(a:NodeSeq) = 
def dispatch: LiftRules.DispatchPF = { 
    case Req("test" :: Nil, "", GetRequest) => 
    () => PlainTextResponse(bean.a) 
} 
} 

Es gibt Nullpointer auf Linie mit bean.a, so dass bedeutet, dass die bean wurden auch nicht initialisiert. Warum?

Antwort

2

Nicht Lift-aware, aber @EJB ist standardmäßig nur für Servlet, Filter, Kontexte Listener, jsf-gemanagte Beans, ejbs, Webbeans und andere Java EE-Komponenten verfügbar. Hinweis: JSP-Klassen sind aufgrund ihrer dynamischen Generierung/Kompilierung nicht für die Verwendung von @EJB geeignet und müssen stattdessen EJBs suchen, obwohl sie zur Laufzeit technisch als Servlet zählen.

Als Alternative zur Injektion könnten Sie Nachschlagen verwenden. Wenn Sie sich auf einem Java EE 6-Server befinden, kann jeder Java-Code das EJB über seinen standardmäßigen "java: global" JNDI-Namen nachschlagen.

Verwandte Themen