使用企业java bean部署lift应用程序时遇到了麻烦。有一个简单的例子:
@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 )
}
}
与bean.a
一致的是NullPointerException,这意味着bean
尚未初始化。为什么呢?
答案 0 :(得分:2)
Not Lift-aware,但@EJB标准仅适用于servlet,过滤器,上下文侦听器,jsf托管bean,ejbs,webbeans和其他Java EE组件。注意JSP类由于它们的动态生成/编译,不能使用@EJB,而是必须查找EJB,即使它们在运行时在技术上被视为servlet。
作为注射的替代方法,您可以使用查找。如果您在Java EE 6服务器中,任何Java代码都可以通过其标准的“java:global”JNDI名称查找EJB。