2010-08-04 5 views
1

용접 - 개찰구에 문제가 있습니다. @ 추상 클래스에서 상속받은 EJB를 삽입 할 때 추상 클래스에서 메소드를 호출하려고하면 ejb-ref 오류가 발생합니다. 그러나 구체적인 클래스에서 메서드를 호출하면 완벽하게 작동합니다. 메소드를 오버라이드하고 호출 할 수 있으며 오버라이드 된 메소드를 오버라이드 된 메소드 호출 super.method()가있는 추상 클래스에 위임 할 수있다. 추상적 클래스에해야 할 일종의 구성이 있습니까?개찰구가있는 슈퍼/초등 클래스의 메소드를 호출 할 때 용접 삽입이 실패합니다

감사합니다.

답변

1

Seam에 대한 내 경험에 기반한 추측입니다. Weld는 빈을 랩핑하는 프록시를 삽입합니다. 프록시는 공용 메소드를 가로 채고 기본 Bean (사용자의 경우 EJB)에 위임합니다. 프록시에서 보호 된 메소드 또는 동일한 패키지의 클래스에서 package-private 메소드를 호출 할 때 메소드가 인터셉트되지 않고 오류를 유발하는 프록시에서 직접 호출됩니다. 이야기를 짧게 만들려면 공용 메서드 만 호출하거나 인터페이스로 모든 종속성을 반환하고 삽입하십시오.

+0

답장을 보내 주셔서 감사합니다. 공용 인터페이스를 추가하는 것은 메소드를 재정의하는 것과 같은 방식으로 작동하지만 공용 인터페이스는 코드를 복제해야하므로 실제로 그다지 도움이되지 않는 다른 인터페이스는 확장 할 수 없습니다. – kgrad

+0

@Inject에서 @EJB로 바뀌었고 완벽하게 작동합니다. 누군가 그 답변을 쓸 수 있으면 받아 들일 것입니다. – kgrad