2014-12-30 9 views
8

Ich versuche ein Objekt eines bestimmten Typs (Greeter) auf ein EJB zu injizieren, das in Wildfly 8.2 läuft. Allerdings scheitert der Einsatz immer mit der MeldungUnzufriedene Abhängigkeiten für Typ X mit Qualifiern @Default

Unsatisfied dependencies for type Greeter with qualifiers @Default 

Ich habe versucht, mit Anmerkungen versehen sowohl die GreeterImpl und die Injektionsstelle mit @Default aber das hat auch nicht funktioniert. Fehle ich hier etwas?

Meine Greeter Schnittstelle:

public interface Greeter { 
    public void sayHi(); 
} 

Meine GreeterImpl Klasse (die einzige, die Greeter implementiert):

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

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

Mein ScheduledGreeter EJB:

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

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

Bin ich etwas über fehlende CDI hier? Brauche ich eine beans.xml unter META-INF, damit dies funktioniert?

Edit:ich dies als war zu Wildfly bereitstellen, wenn das überhaupt zählt.

Antwort

22

In Java EE 7 ist die Standard-Scan für JAR-Dateien/WARs annotated, was bedeutet, dass, wenn Sie nicht über eine beans.xml haben, die den Scan-Modus gibt an, es zu kommentierten basierten Scan nicht erfüllt.

Ihre Klasse GreeterImpl enthält keine Bean definierenden Anmerkungen - keine Bereiche speziell. Sie können dies durch Hinzufügen einer beans.xml oder durch Hinzufügen @Dependent (oder anderen Bereich) zu Ihrem GreeterImpl

+1

überschreiben Die Spezifikation kann auch für Sie von Nutzen sein - http://docs.jboss.org/cdi/spec/1.2/ cdi-spec.html # default_bean_discovery –