2014-10-31 4 views
0

EJB가 Wildfly 응용 프로그램 서버에 올바르게 배포되었습니다. @EJB annotation을 사용하여 주입 할 수 있지만, 이제는 @Inject 주석을 사용하여 주입 할 수 있도록 cdi 빈으로 포장하고 싶습니다. 이를 위해 @EJB를 사용하여 EJB를 주입 한 후 ResourceProducer 클래스를 작성한 다음이를 cdi 빈으로 랩핑합니다. 여기 CDI 종속성 삽입 문제

코드입니다 : 내가

@Inject 
@Named("myBusinessHandler") 
private BusinessHandler handler; 

그러나 이클립스 내게 말하고 사용하여 빈을 주입 주입 지점에서 다음

public class ResourceProducer { 

@EJB 
BusinessHandler businessHandler; 



@Produces 
@Named("myBusinessHandler") 
public BusinessHandler getMyBusinessHandler() { 
    return businessHandler; 
} 
} 

"어떤 빈은 주입 점 [에 주입을받을 수 없다 JSR-299 §5.2.1] " 내가 뭘 잘못하고있어? 내가 빠진 걸 보니? 어떤 도움을 주시면 감사하겠습니다.

감사합니다.

+2

궁금한 점이 있습니다. @ Inject를 통해 EJB를 직접 주입 할 수 있습니까? 왜 래퍼입니까? –

답변

2

EJB를 CDI 빈에 주입하려면 다음 코드를 시도하십시오.

ResourceProducer.java

@Named 
@SessionScoped // or some other scope 
public class ResourceProducer { // Your CDI Bean 
    @Inject 
    BusinessHandler businessHandler; 
} 

귀하의 EJB 당신이 CDI 빈에 EJB를 주입해야 할 전부
BusinessHandler.java

@Stateless 
public class BusinessHandler(){ // Your EJB 
    ... 
} 

.