Предположим, у вас есть следующие 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
. Вместо этого выполняется только реализация метода удаления, которая определена в AbstractRepository
.
Что я делаю неправильно или это просто ограничение Java/EJB 3, что дженерики и наследование не хорошо сочетаются вместе?
Сегодня он работал без изменения какой-либо строки кода. Так что что-то еще, должно быть, пошло не так с средой выполнения, отладчиком или чем-то еще ... Спасибо за ваши ответы! – 2008-08-19 11:19:40