2014-12-30 13 views
8

Sto provando a iniettare un oggetto di un determinato tipo (Greeter) su un EJB in esecuzione su Wildfly 8.2. Tuttavia, la distribuzione non riesce sempre con il messaggioDipendenze insoddisfatte per il tipo X con qualificatori @Default

Unsatisfied dependencies for type Greeter with qualifiers @Default 

ho cercato di annotare sia il GreeterImpl e il punto di iniezione con @Default ma che non ha funzionato anche. Mi sto perdendo qualcosa qui?

mia interfaccia Greeter:

public interface Greeter { 
    public void sayHi(); 
} 

mio GreeterImpl classe (l'unica che implementa Greeter):

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

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

mio ScheduledGreeter EJB:

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

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

mi sto perdendo qualcosa su CDI qui? Ho bisogno di unallo META-INF perché funzioni?

Edit:sto distribuzione di questo come war a wildfly, se che anche le questioni.

risposta

22

In Java EE 7, la scansione di default per i vasi/Wars è annotated, il che significa che se non si dispone di un beans.xml che specifica la modalità di scansione, questo verrà impostato a scansione in base annotato.

La classe, GreeterImpl non ha annotazioni di definizione del bean su di esso, nessun ambito particolare. Puoi sostituirlo aggiungendo un @Dependent o un altroal tuo GreeterImpl

+1

La specifica potrebbe essere utile anche a te - http://docs.jboss.org/cdi/spec/1.2/ cdi-spec.html # default_bean_discovery –