5

我在使用企业 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尚未很好地初始化。为什么?

4

1 回答 1

2

不支持提升,但@EJB 标准上仅可用于 servlet、过滤器、上下文侦听器、jsf 托管 bean、ejb、webbean 和其他 Java EE 组件。注意 JSP 类,由于它们的动态生成/编译,不符合使用 @EJB 的条件,并且必须改为查找 EJB,即使它们在运行时在技术上算作 servlet。

作为注入的替代方法,您可以使用查找。如果您在 Java EE 6 服务器中,任何 Java 代码都可以通过其标准的“java:global”JNDI 名称查找 EJB。

于 2010-08-01T22:37:38.570 回答