2010-08-01 5 views
5

엔터프라이즈 자바 빈을 사용하여 리프트 애플리케이션을 배치하는 데 문제가 있습니다. 간단한 예제가있다 :엔터 프라이즈 java beans가있는 리프트

@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

리프트 인식은 아니지만 @EJB는 서블릿, 필터, 컨텍스트 수신기, jsf 관리 빈, ejbs, webbeans 및 기타 Java EE 구성 요소에서만 사용할 수 있습니다. 참고 JSP 클래스는 동적 생성/컴파일로 인해 @EJB를 사용할 수 없으며 EJB를 런타임시 기술적으로 서블릿으로 계산하더라도 EJB를 조회해야합니다.

주사 대신에 룩업을 사용할 수 있습니다. Java EE 6 서버에있는 경우 모든 Java 코드는 표준 "java : global"JNDI 이름을 통해 EJB를 조회 할 수 있습니다.

관련 문제