可能であれば、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
Beanにアクセスするもう1つのBean:
//...
@EJB
private FooRepository fooRepository;
public void someMethod(Foo foo)
{
fooRepository.delete(foo);
}
//...
ただし、 FooRepository
beanが呼び出されます。代わりに、AbstractRepository
で定義されているdeleteメソッドの実装のみが実行されます。
何が間違っているのですか、それともジェネリックと継承がうまくいっていないJava/EJB 3の制限ですか?
今日は、コード行を変更することなく機能しました。他の何かがランタイム環境、デバッガなどで間違っているはずです... あなたの答えをありがとう! –