2015-12-18 2 views
1

Wildfly 8.2.0Stateless EJB реализует инъекции интерфейс не удалось

У меня есть Stateless EJB и интерфейс.

@Local 
@Stateless 
public class Bean implements IBean{ 
... 
} 

@Local 
public interface IBean { 
... 
} 

Но я получаю СВЕДЕННУЮ ошибку. Если Bean не реализует интерфейс, ошибок нет. Согласно https://stackoverflow.com/a/13988450/2023524 и https://blogs.oracle.com/arungupta/entry/what_s_new_in_ejb не должно быть ошибок.

Ошибка:

WELD-001408: Unsatisfied dependencies for type Bean with qualifiers @Default 
    at injection point [BackedAnnotatedField] @Inject private mypackage.anotherBean.bean 

Update: Я перепробовал все возможные комбинации с Local, но это не помогает. Только если интерфейс удален, ошибок нет.

@Stateless 
public class Bean implements IBean{ 
... 
} 

@Local 
public interface IBean { 
... 
} 

//***************************** 
@Stateless 
public class Bean implements IBean{ 
... 
} 

public interface IBean { 
... 
} 
//************************************ 
@Local 
@Stateless 
public class Bean implements IBean{ 
... 
} 

public interface IBean { 
... 
} 

ответ

3

Если вы хотите, чтобы ввести боб ли с помощью EJB (с использованием @EJB) или CDI (с использованием @Inject) контейнера вы объявляете переменную с типом интерфейса. Конкретная реализация объявленного интерфейса обнаруживается контейнером во время развертывания приложения. В вашем примере проблема связана не с аннотациями, а с объявленным типом, который вводится (Bean вместо IBean).

1

Необходимо удалить @Local из Bean.

@Stateless 
public class Bean implements IBean{ 
... 
} 

Поскольку вы определяете 2 возможных местных СВЭЛД, не знаете, какой из них использовать.

оракула ДОКУМЕНТАЦИЯ шоу в этом тоже с @Remote интерфейса:

@Remote 
public interface Foo { . . . } 

@Stateless 
public class Bean implements Foo, Bar { 
    . . . 
} 
+0

Благодарим вас за ответ. Но это не помогает. См. Обновление вопроса. – Tony

Смежные вопросы