2014-10-31 2 views
0

У меня есть EJB, правильно развернутый в сервере приложений Wildfly. Я могу вставить его с помощью аннотации @EJB, однако теперь я хотел бы включить в компонент cdi, чтобы иметь возможность вводить его, используя аннотацию @Inject. Для этого я создал класс ResourceProducer, который вводит EJB с помощью @EJB, а затем переносит его в компонент cdi.Ошибка ввода зависимостей CDI

Вот код:

public class ResourceProducer { 

@EJB 
BusinessHandler businessHandler; 



@Produces 
@Named("myBusinessHandler") 
public BusinessHandler getMyBusinessHandler() { 
    return businessHandler; 
} 
} 

Тогда в точке впрыска я впрыснуть боб с помощью

@Inject 
@Named("myBusinessHandler") 
private BusinessHandler handler; 

Однако Eclipse, говорит мне «Нет боб не имеет право на инъекции в точке инъекции [ JSR-299 §5.2.1] ". Что я делаю неправильно? Вы видите то, что мне не хватает. Любая помощь будет оценена по достоинству.

спасибо !!

+2

Просто любопытно: вы можете напрямую вводить EJB через '@ Inject', почему оболочка? –

ответ

2

Воспользуйтесь приведенным ниже кодом для ввода EJB в CDI-компонент.

ResourceProducer.java

@Named 
@SessionScoped // or some other scope 
public class ResourceProducer { // Your CDI Bean 
    @Inject 
    BusinessHandler businessHandler; 
} 

Ваш EJB
BusinessHandler.java

@Stateless 
public class BusinessHandler(){ // Your EJB 
    ... 
} 

Это все, что вам нужно сделать, чтобы внедрить в EJB к КДИ боба.

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