2010-08-01 98 views
5

我在使用企業java bean部署電梯應用程序時遇到麻煩。有一個簡單的例子:電梯與企業java bean

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

有上線的NullPointerException與bean.a,這樣就意味着,該bean尚未初始化好。爲什麼?

回答

2

不支持Lift,但標準情況下,@EJB僅適用於servlet,篩選器,上下文偵聽器,jsf託管bean,ejbs,webbeans和其他Java EE組件。注意JSP類由於其動態生成/編譯而無法使用@EJB,而是必須改爲查找EJB,即使它們在技術上在運行時被視爲servlet。

作爲注射的替代品,您可以使用查找。如果您在Java EE 6服務器中,則任何Java代碼都可以通過其標準的「java:global」JNDI名稱來查找EJB。