2014-12-30 3 views
8

Я пытаюсь ввести объект заданного типа (Greeter) на EJB, работающем внутри Wildfly 8.2. Однако развертывание всегда терпит неудачу с сообщениемНеудовлетворительные зависимости для типа X с квалификаторами @Default

Unsatisfied dependencies for type Greeter with qualifiers @Default 

Я попытался аннотирования как GreeterImpl и точка впрыска с @Default но не работать. Я что-то упустил?

Мой Greeter интерфейс:

public interface Greeter { 
    public void sayHi(); 
} 

Мой GreeterImpl класс (только один, который реализует Greeter):

public class GreeterImpl implements Greeter { 
    private static final Logger LOGGER = LoggerFactory.getLogger(GreeterImpl.class); 

    @Override 
    public void sayHi() { 
     LOGGER.info("Hi!"); 
    } 
} 

Мои ScheduledGreeter EJB:

@Stateless 
public class ScheduledGreeter { 
    @Inject 
    private Greeter greeter; 

    @Schedule(second = "*/15", minute = "*", hour = "*") 
    public void sayHi() { 
     greeter.sayHi(); 
    } 
} 

Я пропускаю что-то о CDI здесь? Нужно ли мне beans.xml на META-INF для этого?

Edit:Я развернуть это как war к Wildfly, если что даже вопросы.

ответ

22

В Java EE 7, сканирование по умолчанию для баночек/Война annotated, а это означает, что если вы не имеете beans.xml, который определяет режим сканирования, то по умолчанию будет аннотированным сканирования на основе.

Ваш класс, GreeterImpl не имеет компонентов, определяющих аннотации на нем - в частности, нет областей. Вы можете изменить это, добавив beans.xml или путем добавления @Dependent (или другой сферы) к вашему GreeterImpl

+1

Спецификация может быть полезна для Вас, а также - http://docs.jboss.org/cdi/spec/1.2/ КДИ-spec.html # default_bean_discovery –

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

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