2013-06-28 4 views
3

JSF Managed Bean을 EJB에 삽입 할 수 있습니까? JSF Managed Beans를 다른 JSF Managed Bean에 @ManagedProperty로 주입했습니다. 그러나 EJB와 동일한 작업을 수행 할 때 널 포인트 예외가 발생합니다.EJB에 JSF Managed Bean 주입

+1

왜 그렇게하고 싶습니까? 이것이 올바른 해결책이라고 잘못 생각한 문제는 정확히 무엇입니까? 대신 구체적인 기능 요구 사항에 대해 질문하고 자세히 설명하십시오. – BalusC

+0

JSF Managed Bean에 비즈니스 로직을 잘못 포함했습니다. 제안한대로 EJB에서 필요로하는 JSF Managed Bean 메소드의 비즈니스 로직이 새 EJB로 이동되도록 고려할 것입니다. 고맙습니다. 그러나 나는 이것을 대답으로 어떻게 받아 들일 수 있습니까? –

답변

9

아니요, 불가능합니다. @ManagedProperty@ManagedBean 클래스 (JSF 관리 빈)에서만 작동합니다. @EJB 또는 @Inject을 g 용하여 다른 EJB 또는 CDI 관리 Bean (@Named 클래스)을 주입 할 수 있습니다.

그러나 JSF 또는 CDI 관리 빈과 같은 프런트 엔드 클래스를 EJB와 같은 비즈니스 서비스 클래스에 삽입하는 것은 기술적으로 의미가 없습니다. EJB는 JAX-RS 웹 서비스와 같은 완전히 다른 프런트 엔드 또는 일반 바닐라 서블릿과 함께 재사용 할 수있는 방식으로 설계되어야합니다. EJB는 javax.faces.* 수입/의존성을 전혀 가지지 않아야합니다 (예 : javax.ws.rs.*이나 javax.servlet.*은 가져 오지 않아야 함).

JSF 관리 빈에서 EJB로 데이터를 전달하려는 경우 메소드 인수로 전달하십시오. 이러한 데이터는 일반적으로 JPA @Entity의 풍미에 있거나 적어도 엔티티를 반환하는 ID/키워드입니다.