나는 추상 EJB와 그 하위 클래스 두 개를 가지고있다. 내 관리 빈에서 나는 추상적 인 타입의 필드를 가지며 하위 클래스 중 하나의 인스턴스로 페이지에 전달 된 매개 변수에 따라 초기화하려고합니다. 나는 주사를 사용하여이를 수행 할 수있는 방법이 없다고 생각하고 좋은 JNDI 조회를 사용해야한다 ... 아니면 주사를 사용할 수 있도록 재 설계 할 수있는 방법이 있을까?EJB 하위 클래스 삽입 방법
수정 EJB 추상을 정의 할 수는 없지만 상황은 변하지 않습니다. AbstractEJB가 추상이 아니더라도 하위 클래스 만 인스턴스화하려고합니다.
@Stateless
public abstract class AbstractEJB {
public abstract void method1();
}
@Stateless
public class Implementation1 extends AbstractEJB() {
public void method1() { ... }
}
@Stateless
public class Implementation2 extends AbstractEJB() {
public void method1() { ... }
}
@ManagedBean
public class MyManagedBean {
@EJB
AbstractEJB myEJB; //has to be initialized with either Implementation1 or Implementation2 instance
}
이 완전히 내 문제가 해결되지 않습니다 - 나는 런타임에서 인스턴스화 할 수있는 서브 클래스를 결정해야을 (매개 변수에 열린 페이지를 따라) – AndreiM
아니, '아무튼 나는이 가정을 간과했다. 주입은 응용 프로그램 시작시 발생하며 JNDI 조회 만 동적입니다. 또 다른 옵션은 두 EJB를 다른 필드에 주입하고 "if"또는 좀 더 정교한 패턴으로 선택하는 것입니다. – MaDa
_ 다른 옵션을 사용하면 두 필드 모두에 EJB를 삽입하고 "if"또는 좀 더 정교한 패턴으로 선택된 EJB 중 하나를 선택하는 것입니다. - 그게 바로 현재이 문제가 해결 된 방법입니다. 나는 불필요한 인스턴스 주입과 관련된 비용을 피하려고 노력하고 있었다고 생각합니다. – AndreiM