2010-08-01 13 views
5

J'ai des problèmes avec le déploiement de l'application de levage avec des fèves java d'entreprise. Il y a un exemple simple:soulever avec des fèves java d'entreprise

@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) 
} 
} 

Il y a NullPointerException en ligne avec bean.a, ce qui signifie que le bean n'ont pas été correctement initialisé. Pourquoi?

Répondre

2

Non conscient de Lift, mais @EJB n'est normalement disponible que pour les servlets, filtres, écouteurs de contexte, jsfs gérés jsf, ejbs, webbeans et autres composants Java EE. Remarque Les classes JSP, en raison de leur génération/compilation dynamique, ne sont pas éligibles pour utiliser @EJB et doivent rechercher les EJB à la place même s'ils comptent techniquement comme servlet lors de l'exécution.

En alternative à l'injection, vous pouvez utiliser la recherche. Si vous êtes dans un serveur Java EE 6, n'importe quel code java peut rechercher l'EJB via son nom JNDI standard "java: global".