5

エンタープライズJavaBeanを使用してリフトアプリケーションをデプロイするのに問題があります。簡単な例があります:

@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は通常、サーブレット、フィルター、コンテキストリスナー、jsf管理対象Bean、EJB、WebBean、およびその他のJavaEEコンポーネントでのみ使用できます。注JSPクラスは、動的な生成/コンパイルのため、@ EJBを使用する資格がなく、実行時に技術的にサーブレットとしてカウントされても、代わりにEJBをルックアップする必要があります。

インジェクションの代わりに、ルックアップを使用できます。Java EE 6サーバーを使用している場合、任意のJavaコードで標準の「java:global」JNDI名を使用してEJBを検索できます。

于 2010-08-01T22:37:38.570 に答える