2010-08-01 52 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。