Dependency injection 组件上的EJB调用失败
将UserRepository接口插入控制器时发生以下异常:Dependency injection 组件上的EJB调用失败,dependency-injection,ejb,java-ee-6,Dependency Injection,Ejb,Java Ee 6,将UserRepository接口插入控制器时发生以下异常: EJB Invocation failed on component UserRepositoryMock for method public abstract java.util.List com.test.repository.IRepository.all(): javax.ejb.EJBTransactionRolledbackException: WFLYEE0042: Failed to construct compone
EJB Invocation failed on component UserRepositoryMock for method public abstract java.util.List com.test.repository.IRepository.all(): javax.ejb.EJBTransactionRolledbackException: WFLYEE0042: Failed to construct component instance
我不确定,也许继承层次可能是个问题:
IRepository由IUserRepository实现。然后我有一个抽象类AbstractRepository,它也实现了IRepository。
UserRepositoryMock扩展了AbstractRepository并实现了IUserRepository接口
代码:
@Singleton
@Alternative
public class UserRepositoryMock extends AbstractRepository<IUser> implements IUserRepository {
@EJB
private IUserFactory userFactory;
public UserRepositoryMock(){
userFactory.generateFirstUser()
}
}
@Singleton
@另类
公共类UserRepositoryMock扩展了AbstractRepository实现了IUserRepository{
@EJB
私人工厂;
公共用户repositorymock(){
userFactory.generateFirstUser()
}
}
抽象存储库
@Singleton
public abstract class AbstractRepository<T extends IBO> implements IRepository<T> {
@Override
public List<T> all(){....}
}
@Singleton
公共抽象类AbstractRepository实现了IRepository{
@凌驾
public List all(){….}
}
IUSER存储库:
public interface IUserRepository extends IRepository<IUser>{
...
}
公共接口IUserRepository扩展了IRepository{
...
}
其他注射效果很好,有什么想法吗?我建议改变这一点:
public UserRepositoryMock(){
userFactory.generateFirstUser();
}
例如:
@PostConstruct
public void setup() {
userFactory.generateFirstUser();
}