2013-07-16 1 views
0

Glassfish 4.0에서 EJB3.2를 실험하고 있습니다. 나는 또한 EJB 애플리케이션을 작성하는 데 익숙하지 않으므로 어리석은 오류가 발생할 확률이 높습니다.@EJB 주입시 Bean을 찾을 수 없습니다.

는 내가 필요로 내 수업을 줄일 :

@Stateless 
@WebService 
public class SomeJob { 

    @EJB MyService myService; 

    public void doSomething(){...}; 
} 

@Stateless 
public class MyService { 

    @EJB AnotherEJB anotherEjb; 

} 

@Stateless 
public class AnotherEJB { 

} 

Wenn 나는 내가 스택 추적을 참조 글래스 피쉬에서 제공하는 WebService에 테스터 기능을 통해 SomeJob.doSomething()를 호출하고 I는 ServerLog로 이동하고있다. 내가 이해할 수없는 것은, 왜 원격 인터페이스가

Caused by: java.lang.IllegalStateException: Exception attempting to inject Remote ejb-ref name=some.url.zvagent.anotherEjb.MyService/anotherEjb,Remote 3.x interface 
    at org.glassfish.weld.services.InjectionServicesImpl.aroundInject(InjectionServicesImpl.java:145) 
    at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:46) 
    at org.jboss.weld.injection.producer.DefaultInjector.inject(DefaultInjector.java:64) 
    at org.jboss.weld.injection.producer.BasicInjectionTarget.inject(BasicInjectionTarget.java:91) 
    at org.glassfish.weld.services.JCDIServiceImpl.injectEJBInstance(JCDIServiceImpl.java:257) 
    at com.sun.ejb.containers.BaseContainer.injectEjbInstance(BaseContainer.java:1683) 
    at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:475) 

를 검색하는 경우 : ServerLog에서

나는 네이밍 예외를 찾기? 나는 하나도 선언하지 않았다. 왜 내가 필요한거야? 복잡한 구성을 원하지 않습니다. 응용 프로그램에는 외부 클라이언트가 없습니다. 그것은 독립해야합니다.

답변

1

문제는 누락 된 라이브러리로 인해 EJB가 초기화되지 않아 다른 빈에 주입 될 수없는 것처럼 보입니다.

일반적인 해결 방법 : 주입이 작동하지 않으면 시작시 서버의 인쇄물을 확인하십시오. 서버는 어떤 EJB가 초기화/등록되었는지보고합니다.

관련 문제