Результаты поиска
Как я могу переопределить метод EJB 3 session bean с общим аргументом - если это вообще возможно?
Предположим, у вас есть следующие EJB 3 interfaces/classes:
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);
}
//...
Однако метод переопределения никогда не выполняется при вызове метода delete компонента FooRepository . Вместо этого выполняется только реализация метода delete, определенного в AbstractRepository .
Что я делаю неправильно или это просто ограничение Java/EJB 3, что дженерики и наследование еще не играют хорошо вместе ?
Почему сеансовые компоненты без сохранения состояния являются однопоточными?
В соответствии с моим пониманием сеансовые компоненты без состояния используются для кодирования бизнес-логики. Они не могут хранить данные в своих переменных экземпляра, поскольку их экземпляр совместно используется несколькими запросами. Таким образом, они больше похожи на классы Singleton. Однако разница заключается в том, что contain создает (или повторно использует из пула) отдельный экземпляр сеансовых компонентов без сохранения состояния для каждого запроса.
После поиска в Google я мог бы найти рассуждение о том, что спецификация Java EE говорит, что они должны быть однопоточными. Но я не могу понять причину, по которой указаны однопоточные ?