가능한 경우 EJB 3 세션 bean 메소드를 일반적인 인수로 대체 할 수 있습니까?
다음과 같은 EJB 3 인터페이스/클래스가 있다고 가정하십시오.public interface Repository<E>
{
public void delete(E entity);
}
public abstract class AbstractRepository<E> implements Repository<E>
{
public void delete(E entity){
//...
}
}
public interface FooRepository<Foo>
{
//other methods
}
@Local(FooRepository.class)
@Stateless
public class FooRepositoryImpl extends
AbstractRepository<Foo> implements FooRepository
{
@Override
public void delete(Foo entity){
//do something before deleting the entity
super.delete(entity);
}
//other methods
}
FooRepository
//...
@EJB
private FooRepository fooRepository;
public void someMethod(Foo foo)
{
fooRepository.delete(foo);
}
//...
그러나, FooRepository
bean이 호출됩니다. 대신, AbstractRepository
에 정의 된 delete 메소드의 구현 만 실행됩니다.
무엇이 잘못 되었나요? 아니면 generics와 상속이 잘 조화되지 않는 Java/EJB 3의 한계입니까?
오늘 코드 줄을 변경하지 않고 작동했습니다. 그래서 뭔가 다른 런타임 환경, 디버거 또는 뭔가 잘못 갔어야합니다 ... 답해 주셔서 감사합니다! –